CreateGroup creates a group.
(ctx context.Context, req *connect.Request[v1pb.CreateGroupRequest])
| 123 | |
| 124 | // CreateGroup creates a group. |
| 125 | func (s *GroupService) CreateGroup(ctx context.Context, req *connect.Request[v1pb.CreateGroupRequest]) (*connect.Response[v1pb.Group], error) { |
| 126 | if err := s.licenseService.IsFeatureEnabled(ctx, common.GetWorkspaceIDFromContext(ctx), v1pb.PlanFeature_FEATURE_USER_GROUPS); err != nil { |
| 127 | return nil, connect.NewError(connect.CodePermissionDenied, err) |
| 128 | } |
| 129 | groupMessage, err := convertToGroupMessage(req.Msg) |
| 130 | if err != nil { |
| 131 | return nil, connect.NewError(connect.CodeInvalidArgument, err) |
| 132 | } |
| 133 | |
| 134 | if err := validateEmailWithDomains(ctx, s.licenseService, s.store, common.GetWorkspaceIDFromContext(ctx), groupMessage.Email, true); err != nil { |
| 135 | return nil, connect.NewError(connect.CodeInvalidArgument, errors.Wrapf(err, "invalid email %q", groupMessage.Email)) |
| 136 | } |
| 137 | |
| 138 | groupMessage.Workspace = common.GetWorkspaceIDFromContext(ctx) |
| 139 | |
| 140 | group, err := s.store.CreateGroup(ctx, groupMessage) |
| 141 | if err != nil { |
| 142 | return nil, connect.NewError(connect.CodeInternal, err) |
| 143 | } |
| 144 | |
| 145 | if err := s.iamManager.ReloadCache(ctx); err != nil { |
| 146 | return nil, err |
| 147 | } |
| 148 | |
| 149 | result, err := s.convertToV1Group(group) |
| 150 | if err != nil { |
| 151 | return nil, err |
| 152 | } |
| 153 | return connect.NewResponse(result), nil |
| 154 | } |
| 155 | |
| 156 | // UpdateGroup updates a group. |
| 157 | func (s *GroupService) UpdateGroup(ctx context.Context, req *connect.Request[v1pb.UpdateGroupRequest]) (*connect.Response[v1pb.Group], error) { |
no test coverage detected