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);
            }
        }
Exemple #4
0
        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"); }
        }