public Task Login(Rbac_User user, bool persistent) { this.user = user; var userName = user.LoginName ?? user.Mobile; var authId = user.Rbac_Auths.FirstOrDefault()?.AuthId ?? "none"; var ticket = Membership.AuthenticationTicket(user.HashId, userName, authId, persistent); logger.LogDebug($"Login with the user \"{user.Id}:{userName}\""); return(Context.SignInAsync(ticket.AuthenticationScheme, ticket.Principal, ticket.Properties)); }
public void Logout() { user = userService.QueryByUserName("guest", "none"); }
public IActionResult PostUser([FromBody] JObject data) { CheckDataSourceParameter(); var valid = SqlMap.Params.GetValue("validmobile", false); var mobile = ValidMobile(data, valid); var loginName = data.GetValue <string>("loginname"); if (loginName.HasValue() && userService.GetByLoginName(loginName) != null) { throw new AceException("用户名 [" + loginName + "] 已经使用"); } var user = new Rbac_User(); user.InitializeId(); user.DCreate = DateTime.Now; user.Enabled = data.GetValue("enable", 1) == 1; user.UserType = (UserType)data.GetValue <int>("usertype", 0); user.LoginName = loginName; user.UserName = data.GetValue <string>("username"); user.NickName = data.GetValue("nickname", mobile); user.Password = CryptoHelper.ComputeMD5(user.HashId, data["password"].Value <string>()); user.Photo = data.GetValue <string>("photo"); user.Mobile = mobile; user.Mail = data.GetValue <string>("mail"); user.Remark = data.GetValue <string>("remark"); user.Creator = data.GetValue("creator", SqlMap.Params.GetValue("creator", AppCtx.AC.User.Id.ToString())); //user.System = data.GetValue("system", 0) == 1; user.RegType = (RegType)data.GetValue("regtype", 9); user.Client_Id = data.GetValue <long?>("clientid"); AppCtx.Session.BeginTransaction(); try { var refcode = data.GetValue("refcode", ""); var refname = data.GetValue("refname", ""); var checkInsertSql = SqlMap.Params.GetValue("checkinsertsql", ""); var checkInsertError = SqlMap.Params.GetValue("checkinserterror", ""); if (checkInsertSql.HasValue()) { var result = AppCtx.Session.QueryFirst(checkInsertSql, new { refid = data.GetValue("refid", App.IdWorker.NextId()), refcode, refname }); if (result.cnt > 0) { throw new AceException(checkInsertError.FormatWith(refcode, refname)); } refcode = result.refcode.ToString(); } else if (checkInsertError.HasValue() && userService.GetByRefCode(refcode) != null) { throw new AceException(checkInsertError.FormatWith(refcode, refname)); } user.RefCode = refcode; if (App.GetQuery("scale", 0) == 1) { var refId = data.GetValue <string>("ref_id"); var scale = scaleService.GetByRef(refId); if (scale == null) { scale = new Rbac_Scale(); scale.InitializeId(); scale.DCreate = DateTime.Now; scale.Name = data.GetValue("scale_name", user.UserName); if (refId.HasValue()) { scale.Ref_Id = refId; } scale.ParentId = AppCtx.AC.User.Scale_Id; scale.Remark = "由用户 [" + user.LoginName + "] 自动生成"; scaleService.Insert(scale); } user.Scale_Id = scale.Id; user.UserType = UserType.Admin; } else { user.Scale_Id = data.GetValue("scale_id", AppCtx.AC.GetDefaultScaleId()); } userService.Insert(user); var roles = SqlMap.Params.GetValue("roles", ""); if (roles.HasValue()) { roles.Split <long>().Each(roleId => { var ua = new Rbac_UA(); ua.InitializeId(); ua.User_Id = user.Id; ua.Role_Id = roleId; ua.DCreate = DateTime.Now; AppCtx.Session.Insert(ua); }); } AppCtx.Session.Commit(); if (SqlMap.SqlId != "rbac.user") { SqlMapper.CacheManager.Flush(SqlMap.SqlId); } SqlMapper.CacheManager.Flush("rbac.user"); } catch (Exception ex) { AppCtx.Session.Rollback(); throw new AceException(ex.GetMessage()); } return(Ok(null)); }
public IActionResult PutUser([FromBody] JObject data) { Rbac_User user = null; var userId = data.GetValue <long>("id", 0); if (userId > 0) { user = userService.Get(userId); } else if (AppCtx.AC.Logined) { user = AppCtx.AC.User; } else { throw new AceException("未登录不能修改用户信息"); } var loginName = data.GetValue <string>("loginname"); if (loginName.HasValue()) { var searchUser = userService.GetByLoginName(loginName); if (searchUser != null && searchUser.Id != user.Id) { throw new AceException("登录名 [" + loginName + "] 已经使用"); } user.LoginName = loginName; } var mobile = data.GetValue <string>("mobile"); if (mobile.HasValue()) { var searchUser = userService.GetByMobile(mobile); if (searchUser != null && searchUser.Id != user.Id) { throw new AceException("该手机号已注册或绑定其他用户"); } user.Mobile = mobile; } var mail = data.GetValue <string>("mail"); if (mail.HasValue()) { var searchUser = userService.GetByMail(mail); if (searchUser != null && searchUser.Id != user.Id) { throw new AceException("该邮箱已注册或绑定其他用户"); } user.Mail = mail; } var password = data.GetValue <string>("password"); if (password.HasValue() && !password.EndsWith("==") && password.Length <= 20) { user.Password = CryptoHelper.ComputeMD5(user.HashId, password); } if (data["username"] != null) { user.UserName = data.GetValue <string>("username"); } if (data["nickname"] != null) { user.NickName = data.GetValue <string>("nickname"); } if (data["photo"] != null) { user.Photo = data.GetValue <string>("photo"); } if (data["remark"] != null) { user.Remark = data.GetValue <string>("remark"); } if (data["enable"] != null) { user.Enabled = data.GetValue("enable", 1) == 1; } //if (data["system"] != null) //{ // user.System = data.GetValue("system", 0) == 1; //} if (data["refcode"] != null) { user.RefCode = data.GetValue <string>("refcode"); } if (data["province"] != null) { user.Province = data.GetValue <string>("province"); } if (data["city"] != null) { user.City = data.GetValue <string>("city"); } if (data["County"] != null) { user.Country = data.GetValue <string>("County"); } userService.Update(user); SqlMapper.CacheManager.Flush("rbac.user"); return(Ok(null)); }
public void InitializeData(ISession session) { session.BeginTransaction(); try { var rootScale = new Rbac_Scale(); rootScale.InitializeId(); rootScale.Name = "root"; rootScale.Remark = "系统顶级,默认请勿删除"; rootScale.System = true; rootScale.DCreate = DateTime.Now; session.Insert(rootScale); var adminScale = new Rbac_Scale(); adminScale.Id = Membership.Default_ScaleId; adminScale.ParentId = rootScale.Id; adminScale.Name = "admin"; adminScale.Remark = "管理员级,最高权限层级"; adminScale.System = true; adminScale.DCreate = DateTime.Now; session.Insert(adminScale); var roleAdmin = new Rbac_Role(); roleAdmin.InitializeId(); roleAdmin.Name = "系统管理员"; roleAdmin.Scale_Id = rootScale.Id; roleAdmin.System = true; roleAdmin.DCreate = DateTime.Now; session.Insert(roleAdmin); var roleGuest = new Rbac_Role(); roleGuest.InitializeId(); roleGuest.Name = "游客角色"; roleGuest.Scale_Id = rootScale.Id; roleGuest.System = true; roleGuest.DCreate = DateTime.Now; session.Insert(roleGuest); var root = new Rbac_User(); root.InitializeId(); root.Scale_Id = rootScale.Id; root.LoginName = "root"; root.UserName = "******"; root.NickName = "管理员"; root.Password = CryptoHelper.ComputeMD5(root.HashId, "root&123"); root.DCreate = DateTime.Now; root.Enabled = true; session.Insert(root); var admin = new Rbac_User(); admin.InitializeId(); admin.Scale_Id = adminScale.Id; admin.LoginName = "admin"; admin.UserName = "******"; admin.NickName = "管理员"; admin.UserType = UserType.Admin; admin.Creator = root.Id.ToString(); admin.Password = CryptoHelper.ComputeMD5(admin.HashId, "admin"); admin.DCreate = DateTime.Now; admin.Enabled = true; session.Insert(admin); var guest = new Rbac_User(); guest.InitializeId(); guest.Scale_Id = rootScale.Id; guest.LoginName = "guest"; guest.UserName = "******"; guest.NickName = "游客"; guest.Creator = root.Id.ToString(); guest.Password = CryptoHelper.ComputeMD5(guest.HashId, "guest"); guest.DCreate = DateTime.Now; guest.Enabled = true; session.Insert(guest); var ua = new Rbac_UA(); ua.InitializeId(); ua.Role_Id = roleAdmin.Id; ua.User_Id = admin.Id; ua.DCreate = DateTime.Now; session.Insert(ua); ua = new Rbac_UA(); ua.InitializeId(); ua.Role_Id = roleGuest.Id; ua.User_Id = guest.Id; ua.DCreate = DateTime.Now; session.Insert(ua); session.Commit(); } catch { session.Rollback(); throw; } }