X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7f5e5b88c9161cbec69725108e438aa1532acaf5..2d8150ed20d97491930d99a52d923872bca73939:/services/api/app/models/user.rb?ds=sidebyside diff --git a/services/api/app/models/user.rb b/services/api/app/models/user.rb index 18d33a6b0b..9363cc4f02 100644 --- a/services/api/app/models/user.rb +++ b/services/api/app/models/user.rb @@ -261,6 +261,25 @@ class User < ArvadosModel self.save! end + def set_initial_username(requested: false) + if !requested.is_a?(String) || requested.empty? + email_parts = email.partition("@") + local_parts = email_parts.first.partition("+") + if email_parts.any?(&:empty?) + return + elsif not local_parts.first.empty? + requested = local_parts.first + else + requested = email_parts.first + end + end + requested.sub!(/^[^A-Za-z]+/, "") + requested.gsub!(/[^A-Za-z0-9]/, "") + unless requested.empty? + self.username = find_usable_username_from(requested) + end + end + protected def ensure_ownership_path_leads_to_user @@ -326,23 +345,6 @@ class User < ArvadosModel nil end - def set_initial_username - email_parts = email.partition("@") - local_parts = email_parts.first.partition("+") - if email_parts.any?(&:empty?) - return - elsif not local_parts.first.empty? - base_username = local_parts.first - else - base_username = email_parts.first - end - base_username.sub!(/^[^A-Za-z]+/, "") - base_username.gsub!(/[^A-Za-z0-9]/, "") - unless base_username.empty? - self.username = find_usable_username_from(base_username) - end - end - def prevent_privilege_escalation if current_user.andand.is_admin return true