public void Build(HttpContextBase context) { Username = GetUsername(context.User).ToLower(); PermissionData = new Dictionary <string, string>(); //Get the user groups of the logged in user. Typicaly this will only be one, but some users do belong to multiple groups. //When a user does belong to multiple groups there is a potential for conflicts among the same permission codes. When this happens, the permisison value with the greates weight //will tae precedence using (var dbContext = new DatabaseModel.whitmanenterprisewarehouseEntities()) { var groups = dbContext.vincontrolusergroups.Select( ug => new { ug.vincontrolgroup.groupid, ug.vincontroluser.username }) .Where(g => g.username.ToLower() == Username); foreach (var userGroup in groups) { Buid(userGroup.groupid); } } }
private void Buid(int groupId) { using (var dbContext = new DatabaseModel.whitmanenterprisewarehouseEntities()) { var groupPermissions = dbContext.vincontrolgrouppermissions .Select(gp => new { gp.vincontrolgroup.groupid, gp.vincontrolpermissioncode.permissioncode, gp.vincontrolpermissionvalue.permissionvalue }) .Where(gp => gp.groupid == groupId); foreach (var g in groupPermissions) { if (!PermissionData.ContainsKey(g.permissioncode) && g.permissionvalue != NO_ACCESS) { PermissionData.Add(g.permissioncode, g.permissionvalue); } else if (PermissionData.ContainsKey(g.permissioncode) && PermissionData[g.permissioncode] != ALL_ACCESS) { PermissionData[g.permissioncode] = g.permissionvalue; } } } }