X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/83561af02e156758b09ea771510ad4f9ee506b06..59522bd2b1a628e090d89f71d491b76a0047fdf5:/services/api/app/models/user.rb diff --git a/services/api/app/models/user.rb b/services/api/app/models/user.rb index 65475853f2..7ae95cad6c 100644 --- a/services/api/app/models/user.rb +++ b/services/api/app/models/user.rb @@ -13,6 +13,8 @@ class User < ArvadosModel before_create :check_auto_admin after_create :add_system_group_permission_link after_create :send_admin_notifications + after_update :send_profile_created_notification + has_many :authorized_keys, :foreign_key => :authorized_user_uuid, :primary_key => :uuid @@ -151,47 +153,32 @@ class User < ArvadosModel # delete user signatures, login, repo, and vm perms, and mark as inactive def unsetup # delete oid_login_perms for this user - oid_login_perms = Link.where(tail_uuid: self.email, - link_class: 'permission', - name: 'can_login') - oid_login_perms.each do |perm| - Link.delete perm - end + Link.destroy_all(tail_uuid: self.email, + link_class: 'permission', + name: 'can_login') # delete repo_perms for this user - repo_perms = Link.where(tail_uuid: self.uuid, - link_class: 'permission', - name: 'can_write') - repo_perms.each do |perm| - Link.delete perm - end + Link.destroy_all(tail_uuid: self.uuid, + link_class: 'permission', + name: 'can_manage') # delete vm_login_perms for this user - vm_login_perms = Link.where(tail_uuid: self.uuid, - link_class: 'permission', - name: 'can_login') - vm_login_perms.each do |perm| - Link.delete perm - end + Link.destroy_all(tail_uuid: self.uuid, + link_class: 'permission', + name: 'can_login') # delete "All users' group read permissions for this user group = Group.where(name: 'All users').select do |g| g[:uuid].match /-f+$/ end.first - group_perms = Link.where(tail_uuid: self.uuid, - head_uuid: group[:uuid], - link_class: 'permission', - name: 'can_read') - group_perms.each do |perm| - Link.delete perm - end + Link.destroy_all(tail_uuid: self.uuid, + head_uuid: group[:uuid], + link_class: 'permission', + name: 'can_read') # delete any signatures by this user - signed_uuids = Link.where(link_class: 'signature', - tail_uuid: self.uuid) - signed_uuids.each do |sign| - Link.delete sign - end + Link.destroy_all(link_class: 'signature', + tail_uuid: self.uuid) # mark the user as inactive self.is_active = false @@ -218,7 +205,7 @@ class User < ArvadosModel def check_auto_admin if User.where("uuid not like '%-000000000000000'").where(:is_admin => true).count == 0 and Rails.configuration.auto_admin_user - if current_user.email == Rails.configuration.auto_admin_user + if self.email == Rails.configuration.auto_admin_user self.is_admin = true self.is_active = true end @@ -312,7 +299,7 @@ class User < ArvadosModel repo_perms = Link.where(tail_uuid: self.uuid, head_uuid: repo[:uuid], link_class: 'permission', - name: 'can_write') + name: 'can_manage') if repo_perms.any? logger.warn "User already has repository access " + repo_perms.collect { |p| p[:uuid] }.inspect @@ -327,7 +314,7 @@ class User < ArvadosModel repo_perm = Link.create(tail_uuid: self.uuid, head_uuid: repo[:uuid], link_class: 'permission', - name: 'can_write') + name: 'can_manage') logger.info { "repo permission: " + repo_perm[:uuid] } return repo_perm end @@ -429,4 +416,15 @@ class User < ArvadosModel AdminNotifier.new_inactive_user(self).deliver end end + + # Send notification if the user saved profile for the first time + def send_profile_created_notification + if self.prefs_changed? + if self.prefs_was.andand.empty? || !self.prefs_was.andand['profile'] + profile_notification_address = Rails.configuration.user_profile_notification_address + ProfileNotifier.profile_created(self, profile_notification_address).deliver if profile_notification_address + end + end + end + end