@@ -71,11 +71,12 @@ func (s *ServiceGroup) RevokeRoleByUid(uid string) error {
7171 return err
7272 }
7373 for _ , group := range roleGroups {
74- return s .repositoryGroup .Modify (s .repositoryGroup .BuildDn (group ), nil , attr , nil )
74+ return s .repositoryGroup .ModifyAttributes (s .repositoryGroup .BuildDn (group ), nil , attr , nil )
7575 }
7676 return nil
7777}
7878
79+ // WARN: 千万不要用replaceAttrs在多值属性上,否则会清空其他不相干值
7980func (s * ServiceGroup ) GrantRoleByUid (uid string , newRole security.Role ) error {
8081 oldRole , err := s .GetRoleByUid (uid )
8182 if err != nil {
@@ -110,7 +111,7 @@ func (s *ServiceGroup) GrantRoleByUid(uid string, newRole security.Role) error {
110111
111112 // 如果用户之前没有角色(直接添加)
112113 if oldRole == security .RoleAnonymous {
113- return s .repositoryGroup .Modify (s .repositoryGroup .BuildDn (newGroup ), attr , nil , nil ) // 添加用户
114+ return s .repositoryGroup .ModifyAttributes (s .repositoryGroup .BuildDn (newGroup ), attr , nil , nil ) // 添加用户
114115 }
115116
116117 // 如果是角色切换:先从旧组移除,再添加到新组
@@ -121,14 +122,14 @@ func (s *ServiceGroup) GrantRoleByUid(uid string, newRole security.Role) error {
121122 }
122123
123124 if ! oldNotFound {
124- if err := s .repositoryGroup .Modify (s .repositoryGroup .BuildDn (oldGroup ), nil , attr , nil ); err != nil {
125+ if err := s .repositoryGroup .ModifyAttributes (s .repositoryGroup .BuildDn (oldGroup ), nil , attr , nil ); err != nil {
125126 return err
126127 }
127128 }
128- if err := s .repositoryGroup .Modify (s .repositoryGroup .BuildDn (newGroup ), attr , nil , nil ); err != nil {
129+ if err := s .repositoryGroup .ModifyAttributes (s .repositoryGroup .BuildDn (newGroup ), attr , nil , nil ); err != nil {
129130 // 回滚
130131 if ! oldNotFound {
131- if err = s .repositoryGroup .Modify (s .repositoryGroup .BuildDn (oldGroup ), attr , nil , nil ); err != nil {
132+ if err = s .repositoryGroup .ModifyAttributes (s .repositoryGroup .BuildDn (oldGroup ), attr , nil , nil ); err != nil {
132133 logrus .Warningf ("Failed to rollback group modification when grant role: %v" , err )
133134 }
134135 }
0 commit comments