private void GetDatabaseUserRolesPermissions() { using (MassMailsDbContext _model = new MassMailsDbContext()) { USER _user = _model.USERS.Where(u => u.User_Id == this.User_Id).FirstOrDefault(); if (_user != null) { foreach (ROLE _role in _user.ROLES) { UserRole _userRole = new UserRole { Role_Id = _role.Role_Id, RoleName = _role.RoleName }; foreach (PERMISSION _permission in _role.PERMISSIONS) { _userRole.Permissions.Add(new RolePermission { Permission_Id = _permission.Permission_Id, PermissionName = _permission.PermissionName }); } this.Roles.Add(_userRole); if (!this.IsSysAdmin) { this.IsSysAdmin = _role.IsSysAdmin; } } } } }
public override void OnAuthorization(AuthorizationContext filterContext) { // format permission : controller-action string requiredPermission = String.Format("{0}-{1}", filterContext.ActionDescriptor.ControllerDescriptor.ControllerName, filterContext.ActionDescriptor.ActionName); var Identity = (IdentityUser)filterContext.HttpContext.Session["Identity"]; MassMailsDbContext database = new MassMailsDbContext(); if (Identity != null) { LOG_ACCESS log = new LOG_ACCESS(); log.page = requiredPermission; log.created_at = System.DateTime.Now; log.User_Id = Identity.UserId; AuthUser requestingUser = new AuthUser(Identity.UserId); if (!requestingUser.HasPermission(requiredPermission) & !requestingUser.IsSysAdmin) { log.status = false; database.LOG_ACCESS.Add(log); database.SaveChanges(); filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "action", "Index" }, { "controller", "Unauthorised" } }); } else { log.status = true; database.LOG_ACCESS.Add(log); database.SaveChanges(); } } else { filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "action", "Index" }, { "controller", "Login" }, { "returnUrl", filterContext.HttpContext.Request.RawUrl } }); } }
public User() { db = new MassMailsDbContext(); }