// Code scaffolded by goctl. Safe to edit. // goctl 1.10.1 package member import ( "context" app "haixun-backend/internal/library/errors" "haixun-backend/internal/library/errors/code" "haixun-backend/internal/logic/authz" "haixun-backend/internal/svc" "haixun-backend/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type UpdateMemberRolesLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewUpdateMemberRolesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateMemberRolesLogic { return &UpdateMemberRolesLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *UpdateMemberRolesLogic) UpdateMemberRoles(req *types.UpdateMemberRolesReq) (resp *types.MemberMeData, err error) { if err := authz.RequireAdmin(l.ctx, l.svcCtx); err != nil { return nil, err } tenantID, actorUID, err := actorFrom(l.ctx) if err != nil { return nil, err } if req.UID == actorUID { return nil, app.For(code.Auth).AuthForbidden("admin cannot change own roles") } if err := l.svcCtx.Member.SetRoles(l.ctx, tenantID, req.UID, req.Roles); err != nil { return nil, err } member, err := l.svcCtx.Member.GetByUID(l.ctx, tenantID, req.UID) if err != nil { return nil, err } return toMemberMeData(member), nil }