fix: allow modification for invited user

fix: adds bonus + storage to get total storage

fix: var name changes, use NewBadRequestWithmessage
This commit is contained in:
mngshm 2025-02-13 14:36:46 +05:30
parent 3b3ba721a2
commit a407b1baad

View File

@ -191,32 +191,34 @@ func (c *Controller) CloseFamily(ctx context.Context, adminID int64) error {
}
// ModifyMemberStorage allows admin user to update the storageLimit for a member in the family
func (c *Controller) ModifyMemberStorage(ctx context.Context, adminID int64, id uuid.UUID, storageLimit *int64) error {
func (c *Controller) ModifyMemberStorage(ctx context.Context, actorUserID int64, id uuid.UUID, storageLimit *int64) error {
member, err := c.FamilyRepo.GetMemberById(ctx, id)
if err != nil {
return stacktrace.Propagate(err, "Couldn't fetch Family Member")
}
if member.AdminUserID != adminID {
if member.AdminUserID != actorUserID {
return stacktrace.Propagate(ente.ErrBadRequest, "you do not have sufficient permission")
}
if member.IsAdmin {
return stacktrace.Propagate(ente.ErrCannotModifyAdminStoragLimit, "cannot modify admin storage limit")
return stacktrace.Propagate(ente.NewBadRequestWithMessage("failed to modify storage"), "cannot modify admin storage limit")
}
if member.Status != ente.ACCEPTED {
if member.Status != ente.ACCEPTED && member.Status != ente.INVITED {
return stacktrace.Propagate(ente.ErrBadRequest, "user is not a part of family")
}
// gets admin subscription in order to get the size of total storage quota (including bonus)
activeSub, err := c.FetchMembersForAdminID(ctx, member.AdminUserID)
if err != nil {
return stacktrace.Propagate(ente.ErrNoActiveSubscription, "couldn't get active subscription")
}
if storageLimit != nil && *storageLimit > activeSub.Storage {
return stacktrace.Propagate(ente.ErrStorageLimitExceeded, "potential storage limit is more than subscription storage")
if storageLimit != nil {
familyMembersData, err := c.FetchMembersForAdminID(ctx, member.AdminUserID)
if err != nil {
return stacktrace.Propagate(ente.ErrBadRequest, "couldn't get active subscription")
}
totalFamilyStorage := familyMembersData.Storage + familyMembersData.AdminBonus
if *storageLimit > totalFamilyStorage {
return stacktrace.Propagate(ente.ErrStorageLimitExceeded, "potential storage limit is more than subscription storage")
}
}
// Handle if the admin user tries reducing the storage Limit
@ -227,12 +229,12 @@ func (c *Controller) ModifyMemberStorage(ctx context.Context, adminID int64, id
}
if memberUsage > *storageLimit {
return stacktrace.Propagate(ente.ErrFailedReducingStorageLimit, "Cannot reduce storage, current usage is more.")
return stacktrace.Propagate(ente.NewBadRequestWithMessage("Failed to reduce storage"), "User's current usage is more")
}
modifyStorageErr := c.FamilyRepo.ModifyMemberStorage(ctx, adminID, member.ID, storageLimit)
modifyStorageErr := c.FamilyRepo.ModifyMemberStorage(ctx, actorUserID, member.ID, storageLimit)
if modifyStorageErr != nil {
return stacktrace.Propagate(modifyStorageErr, "Cannot Modify Members Storage")
return stacktrace.Propagate(modifyStorageErr, "Failed to modify members storage")
}
return nil
}