private void CreateOrUpdateMenu(IPersistBroker broker, classification data) { var menu = broker.Retrieve <sys_menu>("SELECT * FROM sys_menu WHERE router = @code", new Dictionary <string, object>() { { "@code", $"blogs/{data.code}" } }); if (menu != null) { menu.menu_Index = data.index; menu.name = data.name; broker.Update(menu); } else { menu = new sys_menu() { Id = Guid.NewGuid().ToString(), name = data.name, parentid = "8201EFED-76E2-4CD1-A522-4803D52D4D92", parentIdName = "博客管理", router = $"blogs/{data.code}", menu_Index = data.index, stateCode = 1, stateCodeName = "启用" }; broker.Create(menu); } }
/// <summary> /// 权限查询 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="broker"></param> /// <param name="id"></param> /// <returns></returns> public static T FilteredRetrieve <T>(this IPersistBroker broker, string id) where T : BaseEntity, new() { var sysEntity = EntityCache.GetEntity(new T().EntityName); AssertUtil.CheckBoolean <InvalidCredentialException>(!AuthAccess.CheckReadAccess(sysEntity.Id), $"用户没有实体[{sysEntity.name}]的查询权限", "451FC4BA-46B2-4838-B8D0-69617DFCAF39"); return(broker.Retrieve <T>(id)); }
/// <summary> /// 获取配置值 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static object GetValue <T>() where T : ISysConfig, new() { var sql = @" select * from sys_config where code = @code; "; var t = new T(); var data = broker.Retrieve <sys_config>(sql, new Dictionary <string, object>() { { "@code", t.Code } }); // 数据库里不存在该配置,则创建一条配置记录 if (data == null) { var model = new sys_config() { name = t.Name, code = t.Code, value = t.DefaultValue?.ToString() }; broker.Create(model); return(t.DefaultValue); } return(data.value); }
/// <summary> /// 更新用户信息 /// </summary> /// <param name="entity"></param> /// <param name="broker"></param> private void UpdateAuthInfo(BaseEntity entity, IPersistBroker broker) { var sql = @" SELECT * FROM auth_user WHERE user_infoid = @id "; var authInfo = broker.Retrieve <auth_user>(sql, new Dictionary <string, object>() { { "@id", entity["user_infoId"]?.ToString() } }); AssertUtil.CheckNull <SpException>(authInfo, "用户Id不能为空", "C37CCF94-6B27-4BF4-AF29-DBEDC9E53E5D"); authInfo.name = entity["name"]?.ToString(); authInfo.roleid = entity["roleid"]?.ToString(); authInfo.roleidName = entity["roleidName"]?.ToString(); new AuthUserService(broker).UpdateData(authInfo); }
/// <summary> /// 获取角色 /// </summary> /// <param name="roleName"></param> /// <returns></returns> public sys_role GetSysRole() { var key = $"{ROLE_PREFIX}_{RoleName}"; return(MemoryCacheUtil.GetOrAddCacheItem(key, () => { var role = Broker.Retrieve <sys_role>("select * from sys_role where name = @name", new Dictionary <string, object>() { { "@name", Role.GetDescription() } }); if (role == null) { role = new sys_role() { Id = Guid.NewGuid().ToString(), name = Role.GetDescription(), is_basic = true }; Broker.Create(role); } return role; }, DateTime.Now.AddHours(12))); }
/// <summary> /// 登录 /// </summary> /// <param name="model"></param> /// <returns></returns> public LoginResponse Login(LoginRequest model) { var code = model.code; var pwd = model.password; var publicKey = model.publicKey; UserIdentityUtil.SetCurrentUser(UserIdentityUtil.GetSystem()); var authUser = Broker.Retrieve <auth_user>("SELECT * FROM auth_user WHERE lower(code) = lower(@code)", new Dictionary <string, object>() { { "@code", code } }); if (authUser == null) { return(new LoginResponse() { result = false, message = "用户名或密码错误" }); } if (authUser.is_lock) { return(new LoginResponse() { result = false, message = "用户已被锁定,请联系管理员" }); } if (string.IsNullOrEmpty(pwd) || string.IsNullOrEmpty(publicKey) || !string.Equals(authUser.password, RSAUtil.Decrypt(pwd, publicKey)) ) { var message = "用户名或密码错误"; if (!authUser.try_times.HasValue) { authUser.try_times = 1; } else { authUser.try_times += 1; if (authUser.try_times > 1) { message = $"用户名或密码已连续错误{authUser.try_times}次,超过五次账号锁定"; } } if (authUser.try_times >= 5) { authUser.is_lock = true; message = $"用户已被锁定,请联系管理员"; } Broker.Update(authUser); return(new LoginResponse() { result = false, message = message }); } if (authUser.try_times > 0) { authUser.try_times = 0; } authUser.last_login_time = DateTime.Now; Broker.Update(authUser); // 返回登录结果、用户信息、用户验证票据信息 var oUser = new LoginResponse { result = true, userName = code, token = JwtHelper.CreateToken(new JwtTokenModel() { Code = authUser.code, Name = authUser.name, Role = authUser.code, Uid = authUser.Id }), userId = authUser.user_infoid, message = "登录成功" }; return(oUser); }