Feat: impl room permission settings

pull/134/head
zijiren233 11 months ago
parent b87e133dba
commit 4e1edff579

@ -151,25 +151,27 @@ type RoomMember struct {
var ErrNoPermission = errors.New("no permission")
func (r *RoomMember) HasPermission(permission RoomMemberPermission) bool {
switch r.Status {
case RoomMemberStatusActive:
return r.Permissions.Has(permission)
default:
if r.Role.IsAdmin() {
return true
}
if !r.Role.IsMember() {
return false
}
if r.Status != RoomMemberStatusActive {
return false
}
return r.Permissions.Has(permission)
}
func (r *RoomMember) HasAdminPermission(permission RoomAdminPermission) bool {
switch r.Status {
case RoomMemberStatusActive:
if !r.Role.IsAdmin() {
return false
}
if r.Role.IsCreator() {
return true
}
return r.AdminPermissions.Has(permission)
default:
if !r.Role.IsAdmin() {
return false
}
if r.Status != RoomMemberStatusActive {
return false
}
return r.AdminPermissions.Has(permission)
}

@ -134,21 +134,30 @@ func (r *Room) HasPermission(userID string, permission model.RoomMemberPermissio
return true
}
switch permission {
switch {
case permission.Has(model.PermissionGetMovieList) && !r.Settings.CanGetMovieList,
permission.Has(model.PermissionAddMovie) && !r.Settings.CanAddMovie,
permission.Has(model.PermissionDeleteMovie) && !r.Settings.CanDeleteMovie,
permission.Has(model.PermissionEditMovie) && !r.Settings.CanEditMovie,
permission.Has(model.PermissionSetCurrentMovie) && !r.Settings.CanSetCurrentMovie,
permission.Has(model.PermissionSetCurrentStatus) && !r.Settings.CanSetCurrentStatus,
permission.Has(model.PermissionSendChatMessage) && !r.Settings.CanSendChatMessage:
return false
default:
return rur.Permissions.Has(permission)
}
return rur.HasPermission(permission)
}
func (r *Room) HasAdminPermission(userID string, permission model.RoomAdminPermission) bool {
if r.CreatorID == userID {
return true
}
rur, err := r.LoadOrCreateRoomMember(userID)
if err != nil {
return false
}
return rur.HasAdminPermission(permission)
}

Loading…
Cancel
Save