public GridResults LoadPaging(long userId, string search, int pageIndex, out long totalRecords, string sortColumnName = "", string sortOrderBy = "") { //Get current user var user = BlUser.LoadSingle(userId); //Query paged data var results = LoadPaging(userId, CreateFilter(search), user.PageSize, pageIndex - 1, out totalRecords); //Convert results into display model var i = 0; var res = (from r in results select new { Id = i++, Module = r.Id, Path = r.Path ?? "", r.Description, EntryDate = r.EntryDate.ToString(true), Logging = r.EnableLogging ? "eye" : "eye-slash colorRed", Status = r.Status == "A" ? "check colorGreen" : "close colorRed" }).ToList(); //Convert display model into json data return(GridVm.FormatResult(res, user.PageSize, pageIndex, totalRecords)); }
public static bool CanDo(long userId, string moduleId, string code) { //Load user for roles var user = BlUser.LoadSingle(userId); if (user == null) { throw new BusinessException("UserNotFound"); } var roles = BlRole.LoadParents(userId, user.Roles.ToList()); //Exit if full permission case of roles system administrator if (roles.Select(r => r.Id).Contains(Constants.FullAdminRole)) { return(true); } //Load permissions for user roles var blPermission = new BlPermission(); var permissions = blPermission.LoadByModuleAndRole(user.Id, moduleId, roles.ToList(), true).ToList(); //Return permission existance return(permissions.Where(p => p.Code == code).Any()); }
public static User LoadByPin(long userId, long pin) { var blUser = new BlUser(); var predicate = PredicateBuilder.False <User>(); predicate = predicate.Or(m => m.Entity.Pin == pin); var toRet = blUser.LoadSearch(userId, predicate).FirstOrDefault(); return(toRet); }
private static IEnumerable <TreeItemVm> ConstructTreeNode(long userId, IEnumerable <Role> roles, bool allowView, bool allowAdd, bool allowEdit, bool allowDelete) { var user = BlUser.LoadSingle(userId); var toRet = new List <TreeItemVm>(); foreach (var role in roles) { TreeItemVm treeNode; var actions = "</span>"; actions += "<span id='actions_" + role.Id + "' style='display:none'> "; if (allowView) { actions += "<a class='treeAction' onclick='javascript:ViewAction(" + role.Id + ");'><span>" + BlDescription.GetDescription(Enumerations.DescriptionResources.Language, "lblView", user.LanguageId) + "</span></a> "; } if (allowAdd) { actions += "<a class='treeAction' onclick='javascript:AddAction(" + role.Id + ");'><span>" + BlDescription.GetDescription(Enumerations.DescriptionResources.Language, "lblAdd", user.LanguageId) + "</span></a> "; } if (allowEdit) { actions += "<a class='treeAction' onclick='javascript:EditAction(" + role.Id + ");'><span>" + BlDescription.GetDescription(Enumerations.DescriptionResources.Language, "lblEdit", user.LanguageId) + "</span></a> "; } if (allowDelete) { actions += "<a class='treeAction' onclick='javascript:DeleteAction(" + role.Id + ");'><span>" + BlDescription.GetDescription(Enumerations.DescriptionResources.Language, "lblDelete", user.LanguageId) + "</span></a> "; } actions += "<span>"; if (role.Id == 0) { treeNode = new TreeItemVm { id = "0", parent = "#", text = "<span onclick='ShowDetails(0);'>Root" + actions + "</span>", icon = "fa fa-briefcase fa-lg colorMain", state = "{\"opened\": \"true\"}", li_attr = "{\"class\" : \"form-control-label\"}" }; } else { treeNode = new TreeItemVm { id = role.Id.ToUiString(), parent = role.ParentRole == null ? "0" : role.ParentRole.Id.ToUiString(), text = "<span onclick='ShowDetails(" + role.Id + ");'>" + role.Code + actions + "</span>", icon = "fa fa-users fa-lg colorMain", li_attr = "{\"class\" : \"form-control-label\"}" }; } toRet.Add(treeNode); } return(toRet); }
public static List <DdlVm.DdlOption> LoadQs(long userId, string parameters, string searchTerm, int pageSize, int pageNum, out long count) { var user = LoadSingle(userId); var blObject = new BlUser(); var serializer = new JavaScriptSerializer(); var dict = serializer.Deserialize <Dictionary <string, object> >(parameters); var isActive = CheckEmpty.Boolean(ref dict, "isActive"); var branchId = CheckEmpty.Numeric(ref dict, "branchId"); var predicate = PredicateBuilder.True <User>(); if (isActive) { predicate = predicate.And(c => c.Entity.Status == "A"); } if (branchId != 0) { predicate = predicate.And(c => c.BranchId == branchId); } if (CheckEmpty.String(searchTerm) != "") { var tokens = searchTerm.Tokens(); foreach (var token in tokens) { var predicate2 = PredicateBuilder.False <User>(); predicate2 = predicate2.Or(m => m.Entity.FirstName.Contains(token)); predicate2 = predicate2.Or(m => m.Entity.FatherName.Contains(token)); predicate2 = predicate2.Or(m => m.Entity.FamilyName.Contains(token)); predicate2 = predicate2.Or(m => m.Entity.ArFirstName.Contains(token)); predicate2 = predicate2.Or(m => m.Entity.ArFatherName.Contains(token)); predicate2 = predicate2.Or(m => m.Entity.ArFamilyName.Contains(token)); predicate2 = predicate2.Or(m => m.UserName.Contains(token)); predicate = predicate.And(predicate2); } } var items = blObject.LoadPaging(userId, predicate, pageSize, (pageNum - 1), out count); return(items.Select(i => FormatForQs(user.LanguageId, i)).ToList()); }
public GridResults LoadPaging(long userId, string search, int pageIndex, out long totalRecords, string sortColumnName = "", string sortOrderBy = "") { //Get current user var user = BlUser.LoadSingle(userId); //Query paged data var results = LoadPaging(userId, CreateFilter(search), Int16.MaxValue, pageIndex - 1, out totalRecords); //Convert results into display model var res = (from r in results select new { r.Id, r.Code, EntryDate = r.EntryDate.ToString(true), Status = r.Status == "A" ? "check colorGreen" : "close colorRed" }).ToList(); //Convert display model into json data return(GridVm.FormatResult(res, Int16.MaxValue, pageIndex, totalRecords)); }
private string GetRoleUsers(long userId, long roleId) { //Get all role users and set is active for assigned ones var blUser = new BlUser(); var users = blUser.LoadAll(userId).ToList(); users.ForEach(u => u.IsRestricted = !u.Roles.Where(r => r.Id == roleId).Any()); var toRet = new JavaScriptSerializer().Serialize((from u in users select new TreeItemVm { id = u.Id.ToUiString(), parent = "#", text = u.UserName, icon = "fa fa-user " + (u.IsRestricted ? "colorRed" : "colorGreen"), state = "{\"checked\": \"" + (u.IsRestricted ? "false" : "true") + "\"}", li_attr = "{\"class\" : \"form-control-label\"}" })); return(toRet); }
public string LoadRoleUsersTree(long userId, long roleId) { //Get all users var blUser = new BlUser(); var users = blUser.LoadAll(userId); users.ToList().ForEach(u => u.IsRestricted = !u.Roles.Select(r => r.Id).Contains(roleId)); //Create return object var toRet = new List <TreeItemVm>(); //Create root node var rootNode = new User { Id = 0, UserName = LoadSingle(userId, roleId).Code }; //Add root node toRet.AddRange(ConstructUserTreeNode(userId, rootNode.SingleItemAsEnumerable())); //Add menus toRet.AddRange(ConstructUserTreeNode(userId, users.ToList())); return(new JavaScriptSerializer().Serialize(toRet)); }
public bool Delete(long userId, long toDeleteId) { using (var tran = new TransactionScope()) { //Check if parent if (HaveChildren(userId, toDeleteId)) { throw new BusinessException("CannotDeleteRelatedChildren"); } //Check if related users var blUser = new BlUser(); if (blUser.LoadByRole(userId, toDeleteId).Any()) { throw new BusinessException("CannotDeleteRelatedUsers"); } var toDelete = LoadSingle(userId, toDeleteId); var toRet = Delete(userId, toDelete); tran.Complete(); return(toRet); } }
public IEnumerable <Permission> LoadByModuleAndRole(long userId, string moduleId, List <Role> roles, bool onlyActive = false) { var predicate = PredicateBuilder.True <Permission>(); predicate = predicate.And(e => e.Module.Id == moduleId); if (onlyActive) { predicate = predicate.And(e => e.Module.Status == "A"); } var permissions = _repository.LoadSearch(predicate).ToList(); //Create modules and access permission if it does not exist if (!permissions.Any()) { var user = BlUser.LoadSingle(userId); //Create module if does not exist if (BlModule.LoadSingle(userId, moduleId) == null) { var newModule = new Module { Id = moduleId, Description = "N/A", Author = user.Id, UserId = user.Id, Status = "A" }; var blModule = new BlModule(); blModule.Create(userId, newModule); } //Create access permission var newPermission = new Permission { Module = BlModule.LoadSingle(userId, moduleId), Code = "Access", Roles = BlRole.LoadSingle(userId, Constants.FullAdminRole).SingleItemAsEnumerable().ToList(), Status = "A" }; Create(userId, newPermission); } var tmpPermissions = new Permission[permissions.Count]; permissions.CopyTo(tmpPermissions); //Remove permission outside the roles foreach (var permission in tmpPermissions) { var keepFlag = false; foreach (var role in roles) { if (permission.Roles.Select(r => r.Id).Contains(role.Id)) { keepFlag = true; break; } } if (!keepFlag) { permissions.Remove(permission); } } return(permissions); }
public string LoadUserMenu(long userId, bool forEdit) { var user = BlUser.LoadSingle(userId); //Load all active menu items per company var predicate = PredicateBuilder.True <Menu>(); predicate = predicate.And(p => p.Status); //Query all entries without a branch or specific for a branch var predicate2 = PredicateBuilder.False <Menu>(); predicate2 = predicate2.Or(p => p.BranchId == user.BranchId); predicate2 = predicate2.Or(p => p.BranchId == null); predicate = predicate.And(predicate2); var lMenu = LoadSearch(userId, predicate).ToList(); //Vaidate if all modules exist in permissions var lDeniedMenu = new List <Menu>(); foreach (var menuItem in lMenu.ToList()) { if (menuItem.Module != null) { if (!BlPermission.CanDo(userId, menuItem.Module.Id, "Access")) { //Build the denied menu list lDeniedMenu.Add(menuItem); } } } //Remove unauthorized and broken menu items lMenu = (from m in lMenu where !(from dm in lDeniedMenu select dm.Id).Contains(m.Id) select m).ToList(); //Iterate all sub menu items and clear broken entries foreach (var menuItem in lMenu.ToList()) { //Remove each node that does not have a module nor children if (menuItem.Module == null) { if (menuItem.Parent != null && menuItem.DescriptionCode != null) { if (!lMenu.Where(m => m.Id == menuItem.Parent.Id && m.Module != null && m.DescriptionCode != null).Any()) { //Check if any children have this item as parent if (!lMenu.Where(m => m.Parent != null).Where(m => m.Parent.Id == menuItem.Id && m.Module != null && m.DescriptionCode != null).Any()) { lDeniedMenu.Add(menuItem); } } } } } //Remove unauthorized and broken menu entries lMenu = (from m in lMenu where !(from dm in lDeniedMenu select dm.Id).Contains(m.Id) select m).ToList(); //Iterate all top menu items and clear broken entries foreach (var menuItem in lMenu.Where(m => m.Parent == null).ToList()) { if (menuItem.Module == null) { //Remove each node that does not have a module nor children if (!lMenu.Where(m => m.Parent != null).Where(m => m.Parent.Id == menuItem.Id && m.DescriptionCode != null).Any()) { lDeniedMenu.Add(menuItem); } } } //Remove unauthorized and broken menu items lMenu = (from m in lMenu where !(from dm in lDeniedMenu select dm.Id).Contains(m.Id) select m).ToList(); var menu = BuildMenuChildren(user, lMenu, null, forEdit); return(menu); }
public Role Edit(long userId, Role toEdit, string roleUsers = "", string rolePermissions = "") { using (var tran = new TransactionScope()) { var oldImage = LoadSingle(userId, toEdit.Id, true); oldImage.ParentRole = toEdit.ParentRole; oldImage.Code = toEdit.Code; var toRet = _repository.Edit(oldImage); //Adjust role users var arRoleUsers = roleUsers.Split(','); var blUser = new BlUser(); var allUsers = blUser.LoadAll(userId); foreach (var user in allUsers) { if (user.Roles.Where(r => r.Id == toRet.Id).Any() && !arRoleUsers.Contains(user.Id.ToUiString())) { user.Roles.Remove(user.Roles.Where(ur => ur.Id == toRet.Id).First()); blUser.Edit(userId, user); } if (!user.Roles.Where(r => r.Id == toRet.Id).Any() && arRoleUsers.Contains(user.Id.ToUiString())) { user.Roles.Add(LoadSingle(userId, toRet.Id)); blUser.Edit(userId, user); } } //Adjust role permissions var arRolePermissions = rolePermissions.Split(','); var blPermission = new BlPermission(); var allPermissions = blPermission.LoadAll(userId); foreach (var permission in allPermissions) { if (permission.Roles.Where(r => r.Id == toRet.Id).Any() && !arRolePermissions.Contains(permission.Id.ToUiString())) { permission.Roles.Remove(permission.Roles.Where(rp => rp.Id == toRet.Id).First()); blPermission.Edit(userId, permission); } if (!permission.Roles.Where(r => r.Id == toRet.Id).Any() && arRolePermissions.Contains(permission.Id.ToUiString())) { permission.Roles.Add(LoadSingle(userId, toRet.Id)); blPermission.Edit(userId, permission); } } //if (toRet.Users == null) //{toRet.Users = new List<User>();} //toRet.Users = toRet.Users.ToList(); //foreach (var permissionUser in toRet.Users) //{ // var user = BlUser.LoadSingle(Convert.ToInt64(permissionUser.Id)); // if (!toRet.Users.Where(u => roleUsers.Split(',').Contains(u.Id.ToUiString())).Any()) // { // user.Roles.Remove(user.Roles.Where(ur => ur.Id == toRet.Id).First()); // blUser.Edit(userId, user); // } //} //foreach (var roleUserId in arRoleUser) //{ // var user = BlUser.LoadSingle(Convert.ToInt64(roleUserId)); // if (!toRet.Users.Where(u => u.Id == userId).Any()) // { // user.Roles.Remove(user.Roles.Where(r => r.Id == toRet.Id).First()); // blUser.Edit(userId, user); // } // else // { // user.Roles.Add(LoadSingle(userId, toRet.Id)); // blUser.Edit(userId, user); // } //} //} BlLog.Log(userId, Module, "Edit role", "RoleModified", new object[] { toEdit.Code }); tran.Complete(); return(toRet); } }
public string GetSecurityString(long userId, string path) { //CLean path url path = path.ToUpper().Replace("../STOCK/APP/", ""); path = path.ToUpper().Replace("/STOCK/APP/", ""); var toRetList = new ArrayList(); //Load the module by path var predicate = PredicateBuilder.True <Module>(); predicate = predicate.And(p => p.Path == path); var module = LoadSearch(userId, predicate).FirstOrDefault(); //Create module if does not exist if (module == null) { using (var tran = new TransactionScope()) { var systemUser = BlUser.LoadSingle(Constants.SystemUser); var newModule = new Module { Id = path.Split('/')[path.Split('/').Length - 1].ToUpper().Replace(".HTML", ""), Path = path, Description = "N/A", Author = Constants.SystemUser, Status = "A" }; newModule = Create(userId, newModule); //Create first access permission and assign to system admin var newPermission = new Permission { Module = newModule, Code = "Access", Status = "A", Roles = BlRole.LoadSingle(userId, Constants.FullAdminRole). SingleItemAsEnumerable().ToList() }; var blPermission = new BlPermission(); blPermission.Create(userId, newPermission); tran.Complete(); } } //Get module permissions if exists if (module != null) { var blPermission = new BlPermission(); var permissions = blPermission.LoadByModule(userId, module.Id, true); //Check each permission status foreach (var permission in permissions) { if (BlPermission.CanDo(userId, module.Id, permission.Code)) { toRetList.Add(permission.Code); } } } return(string.Join(":", toRetList.ToArray())); }