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
# delete repo_perms for this user
repo_perms = Link.where(tail_uuid: self.uuid,
link_class: 'permission',
- name: 'can_write')
+ name: 'can_manage')
repo_perms.each do |perm|
Link.delete perm
end
self.save!
end
+ # update current user profile
+ def profile updated_profile
+ user_profile = self.prefs['profile']
+ user_profile ||= {}
+ updated_profile.each do |entry|
+ if entry[0].starts_with? 'profile_'
+ user_profile[entry[0].partition('_').last] = entry[1]
+ end
+ end
+ self.prefs['profile'] = user_profile
+ self.save!
+ end
+
protected
def ensure_ownership_path_leads_to_user
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
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
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.changes.andand.include?(:prefs)
+ if !self.changes[:prefs][0].andand.keys.andand.any?
+ 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