feat: list functions now validate user has access to list
This commit is contained in:
@@ -14,6 +14,7 @@ var (
|
|||||||
ErrUserIDsEmpty = errors.New("user ids must not be empty")
|
ErrUserIDsEmpty = errors.New("user ids must not be empty")
|
||||||
ErrListItemIDEmpty = errors.New("list item id must not be empty")
|
ErrListItemIDEmpty = errors.New("list item id must not be empty")
|
||||||
ErrListItemTitleEmpty = errors.New("list item title must not be empty")
|
ErrListItemTitleEmpty = errors.New("list item title must not be empty")
|
||||||
|
ErrUserNotInList = errors.New("user not in list")
|
||||||
)
|
)
|
||||||
|
|
||||||
type List struct {
|
type List struct {
|
||||||
@@ -74,6 +75,14 @@ func (s *ListService) AddUserToList(ctx context.Context, authUserID string, list
|
|||||||
return ErrUserIDEmpty
|
return ErrUserIDEmpty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inList, err := s.repo.IsUserInList(ctx, listID, authUserID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !inList {
|
||||||
|
return ErrUserNotInList
|
||||||
|
}
|
||||||
|
|
||||||
return s.repo.AddUserToList(ctx, listID, userID)
|
return s.repo.AddUserToList(ctx, listID, userID)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,6 +94,14 @@ func (s *ListService) RemoveUserFromList(ctx context.Context, authUserID string,
|
|||||||
return ErrUserIDEmpty
|
return ErrUserIDEmpty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inList, err := s.repo.IsUserInList(ctx, listID, authUserID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !inList {
|
||||||
|
return ErrUserNotInList
|
||||||
|
}
|
||||||
|
|
||||||
return s.repo.RemoveUserFromList(ctx, listID, userID)
|
return s.repo.RemoveUserFromList(ctx, listID, userID)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,6 +113,14 @@ func (s *ListService) CreateListItem(ctx context.Context, authUserID string, lis
|
|||||||
return nil, ErrListItemTitleEmpty
|
return nil, ErrListItemTitleEmpty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inList, err := s.repo.IsUserInList(ctx, listID, authUserID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !inList {
|
||||||
|
return nil, ErrUserNotInList
|
||||||
|
}
|
||||||
|
|
||||||
return s.repo.CreateListItem(ctx, listID, title)
|
return s.repo.CreateListItem(ctx, listID, title)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,5 +132,13 @@ func (s *ListService) UpdateListItem(ctx context.Context, authUserID string, lis
|
|||||||
return ErrListItemTitleEmpty
|
return ErrListItemTitleEmpty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inList, err := s.repo.IsUserInListByItemID(ctx, listItemID, authUserID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !inList {
|
||||||
|
return ErrUserNotInList
|
||||||
|
}
|
||||||
|
|
||||||
return s.repo.UpdateListItem(ctx, listItemID, title, isCompleted)
|
return s.repo.UpdateListItem(ctx, listItemID, title, isCompleted)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user