/// <summary> /// Authorize permission /// </summary> /// <param name="permission">Permission record</param> /// <param name="customer">Customer</param> /// <returns>true - authorized; otherwise, false</returns> public virtual bool Authorize(PermissionRecord permission, User user) { if (permission == null) return false; if (user == null) return false; var userRoles = user.UserRoles.Where(cr => cr.Active); foreach (var role in userRoles) foreach (var permission1 in role.PermissionRecords) if (permission1.SystemName.Equals(permission.SystemName, StringComparison.InvariantCultureIgnoreCase)) return true; return false; }
/// <summary> /// Updates the permission /// </summary> /// <param name="permission">Permission</param> public virtual void Update(PermissionRecord permission) { Guard.IsNotNull(permission, "permission"); permissionPecordRepository.Update(permission); cacheManager.RemoveByPattern(PERMISSIONS_PATTERN_KEY); }
public virtual bool Authorize(PermissionRecord permission) { return Authorize(permission, workContext.CurrentUser); }
/// <summary> /// Install permissions /// </summary> /// <param name="permissionProvider">Permission provider</param> public virtual void Install(IPermissionProvider permissionProvider) { //install new permissions var permissions = permissionProvider.GetPermissions(); foreach (var permission in permissions) { var permission1 = GetBySystemName(permission.SystemName); if (permission1 == null) { //new permission (install it) permission1 = new PermissionRecord() { Name = permission.Name, SystemName = permission.SystemName, Category = permission.Category, }; //default customer role mappings var defaultPermissions = permissionProvider.GetDefaultPermissions(); foreach (var defaultPermission in defaultPermissions) { var userRole = userService.GetUserRoleBySystemName(defaultPermission.UserRoleSystemName); if (userRole == null) { //new role (save it) userRole = new UserRole() { Name = defaultPermission.UserRoleSystemName, Active = true, SystemName = defaultPermission.UserRoleSystemName }; userService.InsertUserRole(userRole); } var defaultMappingProvided = (from p in defaultPermission.PermissionRecords where p.SystemName == permission1.SystemName select p).Any(); var mappingExists = (from p in userRole.PermissionRecords where p.SystemName == permission1.SystemName select p).Any(); if (defaultMappingProvided && !mappingExists) { permission1.UserRoles.Add(userRole); } } //save new permission Insert(permission1); } } }