add user impersonation

This commit is contained in:
sbwalker
2025-01-31 11:14:13 -05:00
parent 1fd2aedf96
commit de6c57a7ee
7 changed files with 138 additions and 4 deletions

View File

@ -72,6 +72,11 @@ namespace Oqtane.Security
return isAuthorized;
}
public static bool ContainsRole(string roles, string roleName)
{
return roles.Split(';', StringSplitOptions.RemoveEmptyEntries).Contains(roleName);
}
public static bool ContainsRole(List<Permission> permissions, string permissionName, string roleName)
{
return permissions.Any(item => item.PermissionName == permissionName && item.RoleName == roleName);
@ -101,7 +106,7 @@ namespace Oqtane.Security
identity.AddClaim(new Claim(ClaimTypes.Name, user.Username));
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.UserId.ToString()));
identity.AddClaim(new Claim(Constants.SiteKeyClaimType, alias.SiteKey));
if (user.Roles.Contains(RoleNames.Host))
if (ContainsRole(user.Roles, RoleNames.Host))
{
// host users are site admins by default
identity.AddClaim(new Claim(ClaimTypes.Role, RoleNames.Host));