mirror of
https://github.com/SoDOff-Project/sodoff.git
synced 2025-11-27 10:06:53 -08:00
Un-nested some ifs and made the initializing of the RolePermissions data hopefully more readable.
This commit is contained in:
parent
890b62c10a
commit
67732b63e9
@ -9,24 +9,12 @@ using GroupMember = sodoff.Model.GroupMember;
|
|||||||
namespace sodoff.Controllers.Common;
|
namespace sodoff.Controllers.Common;
|
||||||
|
|
||||||
public class GroupController : Controller {
|
public class GroupController : Controller {
|
||||||
private static readonly List<RolePermission> RolePermissions;
|
// Any permission that is commented out is not implemented.
|
||||||
|
private static readonly List<string> PermissionsMember = [
|
||||||
static GroupController() {
|
//"Delete Own Msg",
|
||||||
RolePermissions = new List<RolePermission>();
|
|
||||||
for (GroupType type = GroupType.Public; type <= GroupType.Private; type++) {
|
|
||||||
// Anything commented out is not implemented.
|
|
||||||
RolePermissions.Add(new RolePermission {
|
|
||||||
GroupType = type,
|
|
||||||
Role = UserRole.Member,
|
|
||||||
Permissions = [
|
|
||||||
"Delete Own Msg",
|
|
||||||
//"Post Message"
|
//"Post Message"
|
||||||
]
|
];
|
||||||
});
|
private static readonly List<string> PermissionsElder = [
|
||||||
RolePermissions.Add(new RolePermission {
|
|
||||||
GroupType = type,
|
|
||||||
Role = UserRole.Elder,
|
|
||||||
Permissions = [
|
|
||||||
//"Invite",
|
//"Invite",
|
||||||
"Approve Join Request",
|
"Approve Join Request",
|
||||||
//"Post News",
|
//"Post News",
|
||||||
@ -35,12 +23,8 @@ public class GroupController : Controller {
|
|||||||
//"Delete News",
|
//"Delete News",
|
||||||
//"Post Message",
|
//"Post Message",
|
||||||
"Remove Member"
|
"Remove Member"
|
||||||
]
|
];
|
||||||
});
|
private static readonly List<string> PermissionsLeader = [
|
||||||
RolePermissions.Add(new RolePermission {
|
|
||||||
GroupType = type,
|
|
||||||
Role = UserRole.Leader,
|
|
||||||
Permissions = [
|
|
||||||
//"Invite",
|
//"Invite",
|
||||||
"Approve Join Request",
|
"Approve Join Request",
|
||||||
"Assign Leader",
|
"Assign Leader",
|
||||||
@ -53,10 +37,51 @@ public class GroupController : Controller {
|
|||||||
//"Delete News",
|
//"Delete News",
|
||||||
//"Post Message",
|
//"Post Message",
|
||||||
"Remove Member"
|
"Remove Member"
|
||||||
]
|
];
|
||||||
});
|
|
||||||
}
|
private static readonly List<RolePermission> RolePermissions = [
|
||||||
|
new RolePermission {
|
||||||
|
GroupType = GroupType.Public,
|
||||||
|
Role = UserRole.Member,
|
||||||
|
Permissions = PermissionsMember
|
||||||
|
}, new RolePermission {
|
||||||
|
GroupType = GroupType.Public,
|
||||||
|
Role = UserRole.Elder,
|
||||||
|
Permissions = PermissionsElder
|
||||||
|
}, new RolePermission {
|
||||||
|
GroupType = GroupType.Public,
|
||||||
|
Role = UserRole.Leader,
|
||||||
|
Permissions = PermissionsLeader
|
||||||
|
},
|
||||||
|
|
||||||
|
new RolePermission {
|
||||||
|
GroupType = GroupType.MembersOnly,
|
||||||
|
Role = UserRole.Member,
|
||||||
|
Permissions = PermissionsMember
|
||||||
|
}, new RolePermission {
|
||||||
|
GroupType = GroupType.MembersOnly,
|
||||||
|
Role = UserRole.Elder,
|
||||||
|
Permissions = PermissionsElder
|
||||||
|
}, new RolePermission {
|
||||||
|
GroupType = GroupType.MembersOnly,
|
||||||
|
Role = UserRole.Leader,
|
||||||
|
Permissions = PermissionsLeader
|
||||||
|
},
|
||||||
|
|
||||||
|
new RolePermission {
|
||||||
|
GroupType = GroupType.Private,
|
||||||
|
Role = UserRole.Member,
|
||||||
|
Permissions = PermissionsMember
|
||||||
|
}, new RolePermission {
|
||||||
|
GroupType = GroupType.Private,
|
||||||
|
Role = UserRole.Elder,
|
||||||
|
Permissions = PermissionsElder
|
||||||
|
}, new RolePermission {
|
||||||
|
GroupType = GroupType.Private,
|
||||||
|
Role = UserRole.Leader,
|
||||||
|
Permissions = PermissionsLeader
|
||||||
}
|
}
|
||||||
|
];
|
||||||
|
|
||||||
public static readonly Schema.Group EMD_Dragons = new Schema.Group {
|
public static readonly Schema.Group EMD_Dragons = new Schema.Group {
|
||||||
GroupID = "8e68214a-c801-4759-8461-d01f28484134",
|
GroupID = "8e68214a-c801-4759-8461-d01f28484134",
|
||||||
@ -215,17 +240,20 @@ public class GroupController : Controller {
|
|||||||
|
|
||||||
JoinGroupRequest request = XmlUtil.DeserializeXml<JoinGroupRequest>(groupJoinRequest);
|
JoinGroupRequest request = XmlUtil.DeserializeXml<JoinGroupRequest>(groupJoinRequest);
|
||||||
Model.Group? group = ctx.Groups.FirstOrDefault(g => g.GroupID.ToString() == request.GroupID.ToUpper());
|
Model.Group? group = ctx.Groups.FirstOrDefault(g => g.GroupID.ToString() == request.GroupID.ToUpper());
|
||||||
if (group != null) {
|
if (group == null) return Ok(new GroupJoinResult { Success = false, Status = JoinGroupStatus.Error });
|
||||||
if (group.Type >= GroupType.Private) {
|
if (group.Type >= GroupType.Private) {
|
||||||
return Ok(new GroupJoinResult { Success = false, Status = JoinGroupStatus.GroupTypeIsNotPublic });
|
return Ok(new GroupJoinResult { Success = false, Status = JoinGroupStatus.GroupTypeIsNotPublic });
|
||||||
}
|
}
|
||||||
|
|
||||||
GroupMember? existing = viking.GroupRoles.FirstOrDefault(g => g.Group.GameID == gameId);
|
GroupMember? existing = viking.GroupRoles.FirstOrDefault(g => g.Group.GameID == gameId);
|
||||||
if (existing != null) {
|
if (existing != null) {
|
||||||
if (existing.Group == group)
|
if (existing.Group == group)
|
||||||
return Ok(new GroupJoinResult { Success = false, Status = JoinGroupStatus.UserAlreadyMemberOfTheGroup });
|
return Ok(new GroupJoinResult { Success = false, Status = JoinGroupStatus.UserAlreadyMemberOfTheGroup });
|
||||||
|
|
||||||
existing.Group.Vikings.Remove(existing);
|
existing.Group.Vikings.Remove(existing);
|
||||||
if (!existing.Group.Vikings.Any()) ctx.Groups.Remove(existing.Group);
|
if (!existing.Group.Vikings.Any()) ctx.Groups.Remove(existing.Group);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (group.Type == GroupType.MembersOnly) {
|
if (group.Type == GroupType.MembersOnly) {
|
||||||
if (!group.JoinRequests.Any(r => r.Viking == viking))
|
if (!group.JoinRequests.Any(r => r.Viking == viking))
|
||||||
group.JoinRequests.Add(new GroupJoinRequest {
|
group.JoinRequests.Add(new GroupJoinRequest {
|
||||||
@ -237,7 +265,9 @@ public class GroupController : Controller {
|
|||||||
return Ok(new GroupJoinResult { Success = false, Status = JoinGroupStatus.JoinRequestPending });
|
return Ok(new GroupJoinResult { Success = false, Status = JoinGroupStatus.JoinRequestPending });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (group.Vikings.Count < group.MaxMemberLimit) {
|
if (group.Vikings.Count >= group.MaxMemberLimit)
|
||||||
|
return Ok(new GroupJoinResult { Success = false, Status = JoinGroupStatus.GroupIsFull });
|
||||||
|
|
||||||
GroupMember joinee = new GroupMember {
|
GroupMember joinee = new GroupMember {
|
||||||
Viking = viking,
|
Viking = viking,
|
||||||
Group = group,
|
Group = group,
|
||||||
@ -248,11 +278,6 @@ public class GroupController : Controller {
|
|||||||
group.LastActiveTime = joinee.JoinDate;
|
group.LastActiveTime = joinee.JoinDate;
|
||||||
ctx.SaveChanges();
|
ctx.SaveChanges();
|
||||||
return Ok(new GroupJoinResult { Success = true, Status = JoinGroupStatus.Success });
|
return Ok(new GroupJoinResult { Success = true, Status = JoinGroupStatus.Success });
|
||||||
} else {
|
|
||||||
return Ok(new GroupJoinResult { Success = false, Status = JoinGroupStatus.GroupIsFull });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Ok(new GroupJoinResult { Success = false, Status = JoinGroupStatus.Error });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
@ -262,25 +287,21 @@ public class GroupController : Controller {
|
|||||||
public IActionResult LeaveGroup(Viking viking, [FromForm] string groupLeaveRequest) {
|
public IActionResult LeaveGroup(Viking viking, [FromForm] string groupLeaveRequest) {
|
||||||
LeaveGroupRequest request = XmlUtil.DeserializeXml<LeaveGroupRequest>(groupLeaveRequest);
|
LeaveGroupRequest request = XmlUtil.DeserializeXml<LeaveGroupRequest>(groupLeaveRequest);
|
||||||
GroupMember? vikingRole = viking.GroupRoles.FirstOrDefault(g => g.Group.GroupID.ToString() == request.GroupID);
|
GroupMember? vikingRole = viking.GroupRoles.FirstOrDefault(g => g.Group.GroupID.ToString() == request.GroupID);
|
||||||
if (vikingRole != null) {
|
if (vikingRole == null) return Ok(new LeaveGroupResult { Success = false, Status = LeaveGroupStatus.Error });
|
||||||
GroupMember? targetRole = null;
|
GroupMember? targetRole;
|
||||||
if (viking.Uid.ToString().Equals(request.UserID, StringComparison.CurrentCultureIgnoreCase)) {
|
if (viking.Uid.ToString().Equals(request.UserID, StringComparison.CurrentCultureIgnoreCase)) {
|
||||||
targetRole = vikingRole.Group.Vikings.FirstOrDefault(gv => gv.Viking == viking);
|
targetRole = vikingRole.Group.Vikings.FirstOrDefault(gv => gv.Viking == viking);
|
||||||
} else if (vikingRole.UserRole >= UserRole.Elder) {
|
} else if (vikingRole.UserRole >= UserRole.Elder) {
|
||||||
targetRole = vikingRole.Group.Vikings.FirstOrDefault(gv => gv.Viking.Uid.ToString() == request.UserID);
|
targetRole = vikingRole.Group.Vikings.FirstOrDefault(gv => gv.Viking.Uid.ToString() == request.UserID);
|
||||||
} else {
|
} else return Ok(new LeaveGroupResult { Success = false, Status = LeaveGroupStatus.Error });
|
||||||
return Ok(new LeaveGroupResult { Success = false, Status = LeaveGroupStatus.Error });
|
|
||||||
}
|
if (targetRole == null)
|
||||||
if (targetRole != null) {
|
return Ok(new LeaveGroupResult { Success = false, Status = LeaveGroupStatus.UserNotAMemberOfTheGroup });
|
||||||
vikingRole.Group.Vikings.Remove(targetRole);
|
vikingRole.Group.Vikings.Remove(targetRole);
|
||||||
if (!vikingRole.Group.Vikings.Any()) ctx.Groups.Remove(vikingRole.Group);
|
if (!vikingRole.Group.Vikings.Any()) ctx.Groups.Remove(vikingRole.Group);
|
||||||
ctx.SaveChanges();
|
ctx.SaveChanges();
|
||||||
return Ok(new LeaveGroupResult { Success = true, Status = LeaveGroupStatus.Success });
|
return Ok(new LeaveGroupResult { Success = true, Status = LeaveGroupStatus.Success });
|
||||||
}
|
}
|
||||||
return Ok(new LeaveGroupResult { Success = false, Status = LeaveGroupStatus.UserNotAMemberOfTheGroup });
|
|
||||||
}
|
|
||||||
return Ok(new LeaveGroupResult { Success = false, Status = LeaveGroupStatus.Error });
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Produces("application/xml")]
|
[Produces("application/xml")]
|
||||||
@ -336,21 +357,21 @@ public class GroupController : Controller {
|
|||||||
public IActionResult RemoveMember(Viking viking, [FromForm] string removeMemberRequest) {
|
public IActionResult RemoveMember(Viking viking, [FromForm] string removeMemberRequest) {
|
||||||
RemoveMemberRequest request = XmlUtil.DeserializeXml<RemoveMemberRequest>(removeMemberRequest);
|
RemoveMemberRequest request = XmlUtil.DeserializeXml<RemoveMemberRequest>(removeMemberRequest);
|
||||||
GroupMember? vikingRole = viking.GroupRoles.FirstOrDefault(g => g.Group.GroupID.ToString() == request.GroupID);
|
GroupMember? vikingRole = viking.GroupRoles.FirstOrDefault(g => g.Group.GroupID.ToString() == request.GroupID);
|
||||||
if (vikingRole != null) {
|
if (vikingRole == null)
|
||||||
if (vikingRole.UserRole < UserRole.Elder) {
|
return Ok(new RemoveMemberResult { Success = false, Status = RemoveMemberStatus.Error });
|
||||||
|
|
||||||
|
if (vikingRole.UserRole < UserRole.Elder)
|
||||||
return Ok(new RemoveMemberResult { Success = false, Status = RemoveMemberStatus.UserHasNoPermission });
|
return Ok(new RemoveMemberResult { Success = false, Status = RemoveMemberStatus.UserHasNoPermission });
|
||||||
}
|
|
||||||
GroupMember? targetRole = vikingRole.Group.Vikings.FirstOrDefault(gv => gv.Viking.Uid.ToString() == request.RemoveUserID);
|
GroupMember? targetRole = vikingRole.Group.Vikings.FirstOrDefault(gv => gv.Viking.Uid.ToString() == request.RemoveUserID);
|
||||||
if (targetRole != null) {
|
if (targetRole == null)
|
||||||
|
return Ok(new RemoveMemberResult { Success = false, Status = RemoveMemberStatus.UserNotAMemberOfTheGroup });
|
||||||
|
|
||||||
vikingRole.Group.Vikings.Remove(targetRole);
|
vikingRole.Group.Vikings.Remove(targetRole);
|
||||||
if (!vikingRole.Group.Vikings.Any()) ctx.Groups.Remove(vikingRole.Group);
|
if (!vikingRole.Group.Vikings.Any()) ctx.Groups.Remove(vikingRole.Group);
|
||||||
ctx.SaveChanges();
|
ctx.SaveChanges();
|
||||||
return Ok(new RemoveMemberResult { Success = true, Status = RemoveMemberStatus.Success });
|
return Ok(new RemoveMemberResult { Success = true, Status = RemoveMemberStatus.Success });
|
||||||
}
|
}
|
||||||
return Ok(new RemoveMemberResult { Success = false, Status = RemoveMemberStatus.UserNotAMemberOfTheGroup });
|
|
||||||
}
|
|
||||||
return Ok(new RemoveMemberResult { Success = false, Status = RemoveMemberStatus.Error });
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Produces("application/xml")]
|
[Produces("application/xml")]
|
||||||
@ -361,21 +382,30 @@ public class GroupController : Controller {
|
|||||||
|
|
||||||
AuthorizeJoinRequest request = XmlUtil.DeserializeXml<AuthorizeJoinRequest>(authorizeJoinRequest);
|
AuthorizeJoinRequest request = XmlUtil.DeserializeXml<AuthorizeJoinRequest>(authorizeJoinRequest);
|
||||||
GroupMember? vikingRole = viking.GroupRoles.FirstOrDefault(g => g.Group.GroupID.ToString() == request.GroupID);
|
GroupMember? vikingRole = viking.GroupRoles.FirstOrDefault(g => g.Group.GroupID.ToString() == request.GroupID);
|
||||||
if (vikingRole != null) {
|
if (vikingRole == null)
|
||||||
if (vikingRole.UserRole < UserRole.Elder) {
|
return Ok(new AuthorizeJoinResult { Success = false, Status = AuthorizeJoinStatus.ApproverNotInThisGroup });
|
||||||
|
|
||||||
|
if (vikingRole.UserRole < UserRole.Elder)
|
||||||
return Ok(new AuthorizeJoinResult { Success = false, Status = AuthorizeJoinStatus.ApproverHasNoPermission });
|
return Ok(new AuthorizeJoinResult { Success = false, Status = AuthorizeJoinStatus.ApproverHasNoPermission });
|
||||||
}
|
|
||||||
Viking? target = ctx.Vikings.FirstOrDefault(v => v.Uid.ToString() == request.UserID);
|
Viking? target = ctx.Vikings.FirstOrDefault(v => v.Uid.ToString() == request.UserID);
|
||||||
if (target != null) {
|
if (target == null) {
|
||||||
|
return Ok(new AuthorizeJoinResult { Success = false, Status = AuthorizeJoinStatus.Error });
|
||||||
|
}
|
||||||
|
|
||||||
GroupMember? existing = target.GroupRoles.FirstOrDefault(gm => gm.Group.GameID == gameId);
|
GroupMember? existing = target.GroupRoles.FirstOrDefault(gm => gm.Group.GameID == gameId);
|
||||||
if (existing != null) {
|
if (existing != null) {
|
||||||
if (existing.Group == vikingRole.Group) {
|
return Ok(new AuthorizeJoinResult {
|
||||||
return Ok(new AuthorizeJoinResult { Success = false, Status = AuthorizeJoinStatus.UserAlreadyMemberOfTheGroup });
|
Success = false,
|
||||||
} else {
|
Status = existing.Group == vikingRole.Group
|
||||||
return Ok(new AuthorizeJoinResult { Success = false, Status = AuthorizeJoinStatus.UserHasNoJoinRequest });
|
? AuthorizeJoinStatus.UserAlreadyMemberOfTheGroup
|
||||||
|
: AuthorizeJoinStatus.UserHasNoJoinRequest
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (vikingRole.Group.Vikings.Count < vikingRole.Group.MaxMemberLimit) {
|
if (vikingRole.Group.Vikings.Count >= vikingRole.Group.MaxMemberLimit)
|
||||||
|
return Ok(new AuthorizeJoinResult { Success = false, Status = AuthorizeJoinStatus.GroupIsFull });
|
||||||
|
|
||||||
if (request.Approved) {
|
if (request.Approved) {
|
||||||
GroupMember joinee = new GroupMember {
|
GroupMember joinee = new GroupMember {
|
||||||
Viking = target,
|
Viking = target,
|
||||||
@ -386,18 +416,12 @@ public class GroupController : Controller {
|
|||||||
vikingRole.Group.Vikings.Add(joinee);
|
vikingRole.Group.Vikings.Add(joinee);
|
||||||
vikingRole.Group.LastActiveTime = joinee.JoinDate;
|
vikingRole.Group.LastActiveTime = joinee.JoinDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
GroupJoinRequest? joinRequest = ctx.GroupJoinRequests.Find(target.Id, vikingRole.GroupID);
|
GroupJoinRequest? joinRequest = ctx.GroupJoinRequests.Find(target.Id, vikingRole.GroupID);
|
||||||
if (joinRequest != null) ctx.GroupJoinRequests.Remove(joinRequest);
|
if (joinRequest != null) ctx.GroupJoinRequests.Remove(joinRequest);
|
||||||
ctx.SaveChanges();
|
ctx.SaveChanges();
|
||||||
return Ok(new AuthorizeJoinResult { Success = true, Status = AuthorizeJoinStatus.Success });
|
return Ok(new AuthorizeJoinResult { Success = true, Status = AuthorizeJoinStatus.Success });
|
||||||
} else {
|
|
||||||
return Ok(new AuthorizeJoinResult { Success = false, Status = AuthorizeJoinStatus.GroupIsFull });
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return Ok(new AuthorizeJoinResult { Success = false, Status = AuthorizeJoinStatus.Error });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Ok(new AuthorizeJoinResult { Success = false, Status = AuthorizeJoinStatus.ApproverNotInThisGroup });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
@ -407,29 +431,35 @@ public class GroupController : Controller {
|
|||||||
public IActionResult AssignRole(Viking viking, [FromForm] string assignRoleRequest) {
|
public IActionResult AssignRole(Viking viking, [FromForm] string assignRoleRequest) {
|
||||||
AssignRoleRequest request = XmlUtil.DeserializeXml<AssignRoleRequest>(assignRoleRequest);
|
AssignRoleRequest request = XmlUtil.DeserializeXml<AssignRoleRequest>(assignRoleRequest);
|
||||||
GroupMember? vikingRole = viking.GroupRoles.FirstOrDefault(g => g.Group.GroupID.ToString() == request.GroupID);
|
GroupMember? vikingRole = viking.GroupRoles.FirstOrDefault(g => g.Group.GroupID.ToString() == request.GroupID);
|
||||||
if (vikingRole != null) {
|
if (vikingRole == null)
|
||||||
if (vikingRole.UserRole < UserRole.Elder) {
|
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.ApproverNotMemberOfTheGroup });
|
||||||
|
|
||||||
|
if (vikingRole.UserRole < UserRole.Elder)
|
||||||
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.ApproverHasNoPermission });
|
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.ApproverHasNoPermission });
|
||||||
}
|
|
||||||
GroupMember? targetRole = vikingRole.Group.Vikings.FirstOrDefault(gv => gv.Viking.Uid.ToString() == request.MemberID);
|
GroupMember? targetRole = vikingRole.Group.Vikings.FirstOrDefault(gv => gv.Viking.Uid.ToString() == request.MemberID);
|
||||||
if (targetRole != null) {
|
if (targetRole == null)
|
||||||
|
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.MemberNotPartOfTheGroup });
|
||||||
|
|
||||||
if (targetRole.UserRole == request.NewRole)
|
if (targetRole.UserRole == request.NewRole)
|
||||||
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.MemberAlreadyInTheRole });
|
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.MemberAlreadyInTheRole });
|
||||||
if (vikingRole.UserRole == UserRole.Leader) { // Disallow leader from simply demoting themself.
|
|
||||||
|
if (vikingRole.UserRole == UserRole.Leader) {
|
||||||
|
// Disallow leader from simply demoting themself.
|
||||||
if (viking == targetRole.Viking)
|
if (viking == targetRole.Viking)
|
||||||
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.ApproverHasNoPermission });
|
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.ApproverHasNoPermission });
|
||||||
} else if (viking != targetRole.Viking || request.NewRole > vikingRole.UserRole) { // Disallow Elders from promoting themselves to leader, or promoting anyone else to elder, but allow them to demote themselves.
|
} else if (viking != targetRole.Viking || request.NewRole > vikingRole.UserRole) {
|
||||||
|
// Disallow Elders from promoting themselves to leader, or promoting anyone else to elder, but allow them to demote themselves.
|
||||||
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.ApproverHasNoPermission });
|
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.ApproverHasNoPermission });
|
||||||
}
|
}
|
||||||
|
|
||||||
targetRole.UserRole = request.NewRole;
|
targetRole.UserRole = request.NewRole;
|
||||||
if (request.NewRole == UserRole.Leader) vikingRole.UserRole = UserRole.Elder; // This is the only way a leader can demote themself.
|
if (request.NewRole == UserRole.Leader)
|
||||||
|
vikingRole.UserRole = UserRole.Elder; // This is the only way a leader can demote themself.
|
||||||
|
|
||||||
ctx.SaveChanges();
|
ctx.SaveChanges();
|
||||||
return Ok(new AssignRoleResult { Success = true, Status = AssignRoleStatus.Success });
|
return Ok(new AssignRoleResult { Success = true, Status = AssignRoleStatus.Success });
|
||||||
} else {
|
|
||||||
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.MemberNotPartOfTheGroup });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Ok(new AssignRoleResult { Success = false, Status = AssignRoleStatus.ApproverNotMemberOfTheGroup });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user