public static bool CheckHasAuthority(int userid, LythenContext db, params string[] auths) { if (CheckIsSuperAdmin(userid, db)) { return(true); } if (auths.Contains("系统管理员")) { return(false); } #region 确定当前用户角色是否属于指定的角色 //获取当前用户所在角色 string[] userRoles = GetUserAuthority(userid, db); if (userRoles == null) { return(false); } //验证是否属于对应角色 foreach (string auth in auths) { if (userRoles.Contains(auth)) { return(true); } } #endregion return(false); }
static string[] GetUserAuthority(int userId, LythenContext db) { string[] userRoles; string cache_key = "user_vs_roles-" + userId; object objUVR = DataCache.GetCache(cache_key); if (objUVR == null) { userRoles = (from user in db.User_Infos join uvr in db.User_vs_Roles on user.user_id equals uvr.uvr_user_id join rva in db.Role_vs_Authority on uvr.uvr_role_id equals rva.rva_role_id join auth in db.Sys_Authority on rva.rva_auth_id equals auth.auth_id where user.user_id == userId select auth.auth_name ).ToArray(); if (userRoles.Count() == 0) { return(null); } DataCache.SetCache(cache_key, userRoles); } else { userRoles = (string[])objUVR; } return(userRoles); }
public static bool CheckIsSuperAdmin(int userId, LythenContext db) { var query = from uvr in db.User_vs_Roles where uvr.uvr_user_id == userId && uvr.uvr_role_id == 1 select uvr.uvr_user_id; if (query.Count() > 0) { return(true); } else { return(false); } }
public static void WriteLog(int user_id, string info, string ip, string target, int type, string device, LythenContext db) { Sys_Log log = new Sys_Log { log_content = info, log_device = device, log_ip = ip, log_target = target, log_time = DateTime.Now, log_type = type, log_user_id = user_id }; db.Sys_Log.Add(log); try { db.SaveChanges(); } catch (DbEntityValidationException ex) { StringBuilder errors = new StringBuilder(); IEnumerable <DbEntityValidationResult> validationResult = ex.EntityValidationErrors; foreach (DbEntityValidationResult result in validationResult) { ICollection <DbValidationError> validationError = result.ValidationErrors; foreach (DbValidationError err in validationError) { errors.Append(err.PropertyName + ":" + err.ErrorMessage + "\r\n"); } } ErrorUnit.WriteErrorLog(errors.ToString(), "WriteLog"); } catch (Exception e) { ErrorUnit.WriteErrorLog(e.ToString(), "WriteLog"); } }