MM-42201: Enforce group is not the same as username. (#19660)

* MM-42201: Enforce group is not the same as username.

* MM-42201: Adjust test for change to translation id.
Этот коммит содержится в:
mkraft
2022-03-08 09:14:22 -05:00
коммит произвёл GitHub
родитель e49cc0313a
Коммит 21f1d2aabc
7 изменённых файлов: 149 добавлений и 0 удалений

Просмотреть файл

@@ -85,6 +85,11 @@ func (a *App) GetGroupsByUserId(userID string) ([]*model.Group, *model.AppError)
}
func (a *App) CreateGroup(group *model.Group) (*model.Group, *model.AppError) {
if err := a.isUniqueToUsernames(group.GetName()); err != nil {
err.Where = "CreateGroup"
return nil, err
}
group, err := a.Srv().Store.Group().Create(group)
if err != nil {
var invErr *store.ErrInvalidInput
@@ -102,7 +107,27 @@ func (a *App) CreateGroup(group *model.Group) (*model.Group, *model.AppError) {
return group, nil
}
func (a *App) isUniqueToUsernames(val string) *model.AppError {
if val == "" {
return nil
}
var notFoundErr *store.ErrNotFound
user, err := a.Srv().Store.User().GetByUsername(val)
if err != nil && !errors.As(err, &notFoundErr) {
return model.NewAppError("", "app.group.get_by_username_failure", nil, err.Error(), http.StatusInternalServerError)
}
if user != nil {
return model.NewAppError("", "app.group.username_conflict", nil, "", http.StatusBadRequest)
}
return nil
}
func (a *App) CreateGroupWithUserIds(group *model.GroupWithUserIds) (*model.Group, *model.AppError) {
if err := a.isUniqueToUsernames(group.GetName()); err != nil {
err.Where = "CreateGroupWithUserIds"
return nil, err
}
newGroup, err := a.Srv().Store.Group().CreateWithUserIds(group)
if err != nil {
var invErr *store.ErrInvalidInput
@@ -137,6 +162,11 @@ func (a *App) CreateGroupWithUserIds(group *model.GroupWithUserIds) (*model.Grou
}
func (a *App) UpdateGroup(group *model.Group) (*model.Group, *model.AppError) {
if err := a.isUniqueToUsernames(group.GetName()); err != nil {
err.Where = "UpdateGroup"
return nil, err
}
updatedGroup, err := a.Srv().Store.Group().Update(group)
if err == nil {