public virtual IActionResult GetPermissionsForType([FromServices] IPermissionsDAL permDAL, [FromQuery] string objectType) { _logger.LogInformation(nameof(GetPermissionsForType)); var roles = HttpContext.User.Claims.Where(claim => claim.Type == ClaimTypes.Role) .Select(claim => claim.Value) .ToList(); Type typeEntity; try { var dalAssembly = Assembly.Load(Assembly.GetExecutingAssembly().GetReferencedAssemblies() .FirstOrDefault(a => a.Name == "WBS.DAL")); var modelsTypes = dalAssembly.GetTypes().Where(type => type.Namespace == "WBS.DAL.Data.Models" || type.Namespace == "WBS.DAL.Authorization.Models"); typeEntity = modelsTypes.FirstOrDefault(type => type.Name == objectType); } catch (ArgumentNullException) { return(BadRequest(new ResponseError("Данный тип не является частью системы."))); } var perms = permDAL.GetPermissionsForType(typeEntity.FullName, typeEntity.Assembly.GetName().Name, roles); bool accessToCreate, accessToRead, accessToUpdate, accessToDelete; accessToCreate = perms.Where(p => p.AllowCreate).Any(); accessToRead = perms.Where(p => p.AllowRead).Any(); accessToUpdate = perms.Where(p => p.AllowWrite).Any(); accessToDelete = perms.Where(p => p.AllowDelete).Any(); return(Ok(new { accessToCreate, accessToRead, accessToUpdate, accessToDelete })); }
public Permissions(GetCRUD getcrud, IHttpContextAccessor context, IPermissionsDAL _permissionsDal, ILogger <Permissions <T> > logger) { _crud = getcrud(typeof(IPermissions <>), typeof(T)) as ICRUD <T>; _logger = logger; permissionsDal = _permissionsDal; try { var roles = context.HttpContext.User.Claims.Where(c => c.Type == ClaimTypes.Role).Select(c => c.Value).ToList(); var permissions = permissionsDal.GetPermissionsForType( typeof(T).FullName, typeof(T).Assembly.GetName().Name, roles); _allowCreate = permissions.Any(p => p.AllowCreate); _allowDelete = permissions.Any(p => p.AllowDelete); _allowGet = permissions.Any(p => p.AllowRead); _allowUpdate = permissions.Any(p => p.AllowWrite); //все критерии для переданного типа var typeCriterions = permissionsDal.GetTypeCriterions(typeof(T).FullName, typeof(T).Assembly.GetName().Name); foreach (var crit in typeCriterions) { var exp = DynamicExpressionParser.ParseLambda(typeof(T), typeof(bool), crit.Criteria, null); var _del = exp.Compile(); _typeExpressions.Add(new ExpressionCheck { ExpressionDel = _del, AllowCreate = crit.AllowCreate, AllowDelete = crit.AllowDelete, AllowRead = crit.AllowRead, AllowWrite = crit.AllowWrite }); } } catch { _logger.LogInformation("Ошибка получения ролей текущего пользователя"); } }
public AuthController(IServiceProvider provider, ProfilesDAL profileDAL, IPermissionsDAL permissionsDAL, RefreshTokenDAL refreshTokenDAL, ILogger <AuthController> logger) { _provider = provider; _profileDAL = profileDAL; _permissionsDAL = permissionsDAL; _refreshTokenDAL = refreshTokenDAL; _logger = logger; }
public AuthUtils(ProfilesDAL profilesDal, RefreshTokenDAL refreshTokenDal, IPermissionsDAL permissionsDAL, IServiceProvider provider) { _profilesDal = profilesDal; _refreshTokenDal = refreshTokenDal; _permissionsDAL = permissionsDAL; _options = provider.GetService(typeof(AuthOptions)) as AuthOptions; _provider = provider; }
public DescriptorOfFormGenerator(IPermissionsDAL permissionsDAL) { _permissionsDAL = permissionsDAL; }