Multi-tenant role authorization
This commit is contained in:
@ -8,7 +8,7 @@ using System.Linq;
|
||||
|
||||
namespace Oqtane.Repository
|
||||
{
|
||||
public class DBContextBase : IdentityDbContext<IdentityUser>
|
||||
public class DBContextBase : IdentityUserContext<IdentityUser>
|
||||
{
|
||||
private Tenant tenant;
|
||||
private IHttpContextAccessor accessor;
|
||||
|
@ -4,6 +4,7 @@ namespace Oqtane.Repository
|
||||
{
|
||||
public interface ITenantResolver
|
||||
{
|
||||
Alias GetAlias();
|
||||
Tenant GetTenant();
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ namespace Oqtane.Repository
|
||||
{
|
||||
IEnumerable<UserRole> GetUserRoles();
|
||||
IEnumerable<UserRole> GetUserRoles(int UserId);
|
||||
IEnumerable<UserRole> GetUserRoles(int UserId, int SiteId);
|
||||
UserRole AddUserRole(UserRole UserRole);
|
||||
UserRole UpdateUserRole(UserRole UserRole);
|
||||
UserRole GetUserRole(int UserRoleId);
|
||||
|
@ -32,14 +32,25 @@ namespace Oqtane.Repository
|
||||
}
|
||||
}
|
||||
|
||||
public Tenant GetTenant()
|
||||
public Alias GetAlias()
|
||||
{
|
||||
try
|
||||
{
|
||||
IEnumerable<Alias> aliases = _aliasrepository.GetAliases(); // cached
|
||||
Alias alias = aliases.Where(item => item.Name == aliasname).FirstOrDefault();
|
||||
return aliases.Where(item => item.Name == aliasname).FirstOrDefault();
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public Tenant GetTenant()
|
||||
{
|
||||
try
|
||||
{
|
||||
IEnumerable<Tenant> tenants = _tenantrepository.GetTenants(); // cached
|
||||
return tenants.Where(item => item.TenantId == alias.TenantId).FirstOrDefault();
|
||||
return tenants.Where(item => item.TenantId == GetAlias().TenantId).FirstOrDefault();
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
@ -39,6 +39,21 @@ namespace Oqtane.Repository
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<UserRole> GetUserRoles(int UserId, int SiteId)
|
||||
{
|
||||
try
|
||||
{
|
||||
return db.UserRole.Where(item => item.UserId == UserId)
|
||||
.Include(item => item.Role) // eager load roles
|
||||
.Where(item => item.Role.SiteId == SiteId)
|
||||
.ToList();
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public UserRole AddUserRole(UserRole UserRole)
|
||||
{
|
||||
try
|
||||
|
Reference in New Issue
Block a user