using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using System; using System.Threading.Tasks; using WIDESEA_Core.Configuration; using WIDESEA_Core.Extensions; using WIDESEA_Core.Filters; using WIDESEA_Core.ManageUser; using WIDESEA_Core.ObjectActionValidator; using WIDESEA_Core.Utilities; using WIDESEA_Entity.DomainModels; using WIDESEA_Services.IRepositories; using WIDESEA_Services.Repositories; namespace WIDESEA_Services.Controllers { [Route("api/User")] public partial class Sys_UserController { [HttpPost, HttpGet, Route("login"), AllowAnonymous] [ObjectModelValidatorFilter(ValidatorModel.Login)] public async Task Login([FromBody] LoginInfo loginInfo) { return Json(await Service.Login(loginInfo)); } [HttpPost, Route("replaceToken"), AllowAnonymous] public async Task ReplaceToken() { return Json(await Service.ReplaceToken()); } [HttpPost, Route("modifyPwd")] [ApiActionPermission] //通过ObjectGeneralValidatorFilter校验参数,不再需要if esle判断OldPwd与NewPwd参数 [ObjectGeneralValidatorFilter(ValidatorGeneral.OldPwd, ValidatorGeneral.NewPwd)] public async Task ModifyPwd(string oldPwd, string newPwd) { return Json(await Service.ModifyPwd(oldPwd, newPwd)); } [HttpPost, Route("getCurrentUserInfo")] public async Task GetCurrentUserInfo() { return Json(await Service.GetCurrentUserInfo()); } //只能超级管理员才能修改密码 //2020.08.01增加修改密码功能 [HttpPost, Route("modifyUserPwd"), ApiActionPermission(ActionRolePermission.SuperAdmin)] public IActionResult ModifyUserPwd(string password, string userName) { WebResponseContent webResponse = new WebResponseContent(); if (string.IsNullOrEmpty(password) || string.IsNullOrEmpty(userName)) { return Json(webResponse.Error("参数不完整")); } if (password.Length < 6) return Json(webResponse.Error("密码长度不能少于6位")); ISys_UserRepository repository = Sys_UserRepository.Instance; Sys_User user = repository.FindFirst(x => x.UserName == userName); if (user == null) { return Json(webResponse.Error("用户不存在")); } user.UserPwd = password.EncryptDES(AppSetting.Secret.User); repository.Update(user, x => new { x.UserPwd }, true); //如果用户在线,强制下线 UserContext.Current.LogOut(user.User_Id); return Json(webResponse.OK("密码修改成功")); } /// /// 2020.06.15增加登陆验证码 /// /// [HttpGet, Route("getVierificationCode"), AllowAnonymous] public IActionResult GetVierificationCode() { string code = /*VierificationCode.RandomText();*/"1234"; var data = new { img = VierificationCode.CreateBase64Imgage(code), uuid = Guid.NewGuid() }; HttpContext.GetService().Set(data.uuid.ToString(), code, new TimeSpan(0, 5, 0)); return Json(data); } } }