|
@@ -481,12 +481,22 @@ func (r *Role) AdminBindRole(ctx context.Context, req *entity.AdminBindRoleReq)
|
|
|
admin := model.Admin{}
|
|
|
collection = mdb.MDB.Collection(admin.TableName())
|
|
|
objID, _ := primitive.ObjectIDFromHex(req.AdminId)
|
|
|
+ err := collection.FindOne(ctx, bson.M{"_id": objID}).Decode(&admin)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("管理员不存在")
|
|
|
+ }
|
|
|
+ if admin.RoleId == req.RoleId {
|
|
|
+ return fmt.Errorf("管理员角色和请求角色一致,无需修改")
|
|
|
+ }
|
|
|
+ if admin.Username == "admin" {
|
|
|
+ return fmt.Errorf("admin-超级账户不能修改角色")
|
|
|
+ }
|
|
|
filter = bson.M{"_id": objID, "status": 1}
|
|
|
if err := collection.FindOne(ctx, filter).Err(); err != nil {
|
|
|
return fmt.Errorf("管理员不存在 或者 已经被禁用")
|
|
|
}
|
|
|
// 更新管理员数据
|
|
|
- _, err := collection.UpdateByID(ctx, objID, bson.M{"$set": bson.M{"role_id": req.RoleId}})
|
|
|
+ _, err = collection.UpdateByID(ctx, objID, bson.M{"$set": bson.M{"role_id": req.RoleId}})
|
|
|
if err != nil {
|
|
|
return fmt.Errorf("更新管理员失败")
|
|
|
}
|
|
@@ -500,11 +510,19 @@ func (r *Role) AdminUnBindRole(ctx context.Context, req *entity.AdminBindRoleReq
|
|
|
collection := mdb.MDB.Collection(admin.TableName())
|
|
|
objID, _ := primitive.ObjectIDFromHex(req.AdminId)
|
|
|
filter := bson.M{"_id": objID}
|
|
|
- if err := collection.FindOne(ctx, filter).Err(); err != nil {
|
|
|
+ err := collection.FindOne(ctx, filter).Decode(&admin)
|
|
|
+ if err != nil {
|
|
|
return fmt.Errorf("管理员不存在")
|
|
|
}
|
|
|
+
|
|
|
+ if admin.RoleId == req.RoleId {
|
|
|
+ return fmt.Errorf("管理员角色和请求角色一致,无需修改")
|
|
|
+ }
|
|
|
+ if admin.Username == "admin" {
|
|
|
+ return fmt.Errorf("admin-超级账户不能修改角色")
|
|
|
+ }
|
|
|
// 更新管理员数据
|
|
|
- _, err := collection.UpdateByID(ctx, objID, bson.M{"$set": bson.M{"role_id": ""}})
|
|
|
+ _, err = collection.UpdateByID(ctx, objID, bson.M{"$set": bson.M{"role_id": ""}})
|
|
|
if err != nil {
|
|
|
return fmt.Errorf("更新管理员失败")
|
|
|
}
|
|
@@ -565,10 +583,6 @@ func getRoleAccess(ctx context.Context, roleId string) (*models.RoleAccess, erro
|
|
|
}
|
|
|
|
|
|
func (r *Role) GetAdminRole(ctx context.Context, req *entity.AdminBindRoleReq) (*entity.AdminBindRoleResp, error) {
|
|
|
- admin, err := getAdmin(ctx, req.AdminId)
|
|
|
- if err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
|
|
|
role, err := getRole(ctx, req.RoleId)
|
|
|
if err != nil {
|
|
@@ -630,7 +644,7 @@ func (r *Role) GetAdminRole(ctx context.Context, req *entity.AdminBindRoleReq) (
|
|
|
|
|
|
return &entity.AdminBindRoleResp{
|
|
|
AdminId: req.AdminId,
|
|
|
- AdminName: admin.Username,
|
|
|
+ AdminName: "adminUsername",
|
|
|
RoleName: role.Name,
|
|
|
RoleId: req.RoleId,
|
|
|
AccessList: formatAccessData(accessList)},
|