Added check to only let a user delete his own list
This commit is contained in:
@ -155,3 +155,19 @@ func IsErrListItemCannotBeEmpty(err error) bool {
|
||||
func (err ErrListItemCannotBeEmpty) Error() string {
|
||||
return fmt.Sprintf("List item text cannot be empty.")
|
||||
}
|
||||
|
||||
// ErrListItemCannotBeEmpty represents a "ErrListDoesNotExist" kind of error. Used if the list does not exist.
|
||||
type ErrListItemDoesNotExist struct{
|
||||
ID int64
|
||||
}
|
||||
|
||||
// IsErrListItemCannotBeEmpty checks if an error is a ErrListDoesNotExist.
|
||||
func IsErrListItemDoesNotExist(err error) bool {
|
||||
_, ok := err.(ErrListItemDoesNotExist)
|
||||
return ok
|
||||
}
|
||||
|
||||
func (err ErrListItemDoesNotExist) Error() string {
|
||||
return fmt.Sprintf("List item does not exist. [ID: %d]", err.ID)
|
||||
}
|
||||
|
||||
|
@ -65,9 +65,33 @@ func GetItemsByListID(listID int64) (items []*ListItem, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteListItemByID deletes a list item by its ID
|
||||
func DeleteListItemByIDtemByID(itemID int64) (err error) {
|
||||
_, err = x.ID(itemID).Delete(ListItem{})
|
||||
func GetListItemByID(listItemID int64) (listItem ListItem, err error) {
|
||||
exists, err := x.ID(listItemID).Get(&listItem)
|
||||
if err != nil {
|
||||
return ListItem{}, err
|
||||
}
|
||||
|
||||
if !exists {
|
||||
return ListItem{}, ErrListItemDoesNotExist{listItemID}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteListItemByID deletes a list item by its ID
|
||||
func DeleteListItemByID(itemID int64, doer *User) (err error) {
|
||||
|
||||
// Check if it exists
|
||||
listitem, err := GetListItemByID(itemID)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Check if the user hat the right to delete that item
|
||||
if listitem.CreatedByID != doer.ID {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = x.ID(itemID).Delete(ListItem{})
|
||||
return
|
||||
}
|
||||
|
Reference in New Issue
Block a user