OSDN Git Service

UserTeam: Fixed bug when impossible to change admin flag after checked
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Thu, 30 May 2013 08:25:34 +0000 (11:25 +0300)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Thu, 30 May 2013 08:25:34 +0000 (11:25 +0300)
lib/gitlab/user_team_manager.rb

index 99e6839..135df9c 100644 (file)
@@ -25,23 +25,28 @@ module Gitlab
       def update_team_user_membership(team, member, options)
         updates = {}
 
-        if options[:default_projects_access] && options[:default_projects_access].to_s != team.default_projects_access(member).to_s
-          updates[:permission] = options[:default_projects_access]
+        if options[:default_projects_access].present?
+          default_projects_access = options[:default_projects_access].to_s
+
+          if default_projects_access != team.default_projects_access(member).to_s
+            updates[:permission] = default_projects_access
+          end
         end
 
-        if options[:group_admin].to_s != team.admin?(member).to_s
-          updates[:group_admin] = options[:group_admin].present?
+        if options[:group_admin].present?
+          group_admin = options[:group_admin].to_s == "1" ? true : false
+
+          if group_admin != team.admin?(member)
+            updates[:group_admin] = group_admin
+          end
         end
 
         return true if updates.blank?
 
         user_team_relationship = team.user_team_user_relationships.find_by_user_id(member)
-
         return false unless user_team_relationship.update_attributes(updates)
 
-        if updates[:permission]
-          rebuild_project_permissions_to_member(team, member)
-        end
+        rebuild_project_permissions_to_member(team, member) if updates[:permission]
 
         true
       end