From 4131d8bdcadbe766c548a70735fc4b940790ebec Mon Sep 17 00:00:00 2001 From: WangHao <43278047@qq.com> Date: Sun, 18 Apr 2021 20:36:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B3=A8=E5=86=8C=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=20=E9=80=9A=E8=BF=87=E6=89=8B=E6=9C=BA=E5=8F=B7?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E8=B4=A6=E5=8F=B790%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/RegisterPhoneController.java | 25 ++- .../controller/system/SysLoginController.java | 30 ++- .../ruoyi/web/test/controller/UIDTest.java | 31 ++- .../com/ruoyi/common/constant/Constants.java | 2 +- .../common/core/domain/model/LoginBody.java | 37 ---- .../core/domain/model/RegisterBody.java | 106 +++++++++ .../com/ruoyi/common/core/redis/RedisKey.java | 2 + .../com/ruoyi/common/utils/PhoneCode.java | 8 +- .../framework/config/SecurityConfig.java | 10 +- .../web/service/SysLoginService.java | 39 ++-- .../ruoyi/system/mapper/SysUserMapper.java | 2 +- .../resources/mapper/system/SysUserMapper.xml | 6 +- ruoyi-ui/src/api/login.js | 109 +++++---- ruoyi-ui/src/store/modules/user.js | 208 ++++++++++-------- ruoyi-ui/src/views/login.vue | 160 +++++++++++++- .../bookmark/service/ISqMenuService.java | 6 +- .../service/impl/SqMenuServiceImpl.java | 4 +- 17 files changed, 557 insertions(+), 228 deletions(-) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/RegisterPhoneController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/RegisterPhoneController.java index 857b651af..fe5f6b91f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/RegisterPhoneController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/RegisterPhoneController.java @@ -6,9 +6,10 @@ import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.PhoneCode; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bookmarkhtml.Const; +import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @@ -26,7 +27,8 @@ public class RegisterPhoneController extends BaseController @Autowired private ISqMenuService iSqMenuService; - + @Autowired + private ISysUserService userService; /** * 发送注册验证码 */ @@ -35,11 +37,23 @@ public class RegisterPhoneController extends BaseController { AjaxResult ajaxResult = new AjaxResult(); ajaxResult.put("code", HttpStatus.SUCCESS); + + if (StringUtils.isEmpty(phone)){ + ajaxResult.put("msg", "非法手机号,请重新输入!"); + return ajaxResult; + } + int phoneCount = userService.countUserByPhone(phone); + if (phoneCount != 0) { + ajaxResult.put("msg", "此手机账号已经被使用,请前往登陆!"); + return ajaxResult; + } + + Long time = 3600L;//限制规定时间内 访问次数 //防止重复点击 - boolean phoneCodelFlag = iSqMenuService.countRepetition(Const.PHONE_REGISTER,getAuthUser().getUserId(),3600L,10); //3600秒 最多请求10次验证码 + boolean phoneCodelFlag = iSqMenuService.countRepetition(Const.PHONE_REGISTER,Long.valueOf(phone),time,10); //3600秒 最多请求10次验证码 if(!phoneCodelFlag){ - ajaxResult.put("msg","短时间内发送频繁,请稍后再操作!"); + ajaxResult.put("msg","短时间内发送频繁,请过几个小时就再操作!"); return ajaxResult; } @@ -50,7 +64,8 @@ public class RegisterPhoneController extends BaseController ajaxResult.put("msg","短信发送成功,请在"+Constants.CAPTCHA_PHONE_EXPIRATION+"分钟内验证。"); return ajaxResult; }else { - ajaxResult.put("msg","短信发送失败"); + ajaxResult.put("code", HttpStatus.ERROR); + ajaxResult.put("msg","系统错误,短信发送失败,请稍后再试!"); return ajaxResult; } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index dc6678faf..b68d74cdf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -2,6 +2,11 @@ package com.ruoyi.web.controller.system; import java.util.List; import java.util.Set; + +import com.ruoyi.common.constant.HttpStatus; +import com.ruoyi.common.core.domain.model.RegisterBody; +import com.ruoyi.common.core.redis.RedisKey; +import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -39,21 +44,32 @@ public class SysLoginController @Autowired private TokenService tokenService; + @Autowired + private ISysUserService userService; /** * 注册方法 * - * @param loginBody 注册信息 + * @param registerBody 注册信息 * @return 结果 */ @PostMapping("/registerUser") - public AjaxResult registerUser(@RequestBody LoginBody loginBody) - { + public AjaxResult registerUser(@RequestBody RegisterBody registerBody) { + AjaxResult ajax = AjaxResult.success(); - // 生成令牌 - String token = loginService.registerUser(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), - loginBody.getUuid(),loginBody.getEmail(),loginBody.getPhone()); - ajax.put(Constants.TOKEN, token); + + String msg = loginService.registerUser(registerBody.getUsername(), registerBody.getPassword(), registerBody.getPhoneCode(), + registerBody.getUuid(), registerBody.getEmail(), registerBody.getPhone()); + + if (Constants.LOGIN_SUCCESS.equals(msg)) { + ajax.put("msg", "注册成功,请前往登陆!"); + } else if (Constants.LOGIN_FAIL.equals(msg)) { + ajax.put("code", HttpStatus.ERROR); + ajax.put("msg", "注册失败,系统错误,请稍后再尝试!"); + } else { + ajax.put("code", HttpStatus.ERROR); + ajax.put("msg", msg); + } return ajax; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/UIDTest.java b/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/UIDTest.java index fa485cd19..6b237be65 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/UIDTest.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/test/controller/UIDTest.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import com.github.wujun234.uid.UidGenerator; import com.ruoyi.bookmark.service.ISqMenuService; import com.ruoyi.common.core.redis.RedisUtil; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.bookmarkhtml.Const; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -25,12 +26,9 @@ public class UIDTest extends BaseSpringBootTest{ private UidGenerator cachedUidGenerator; @Autowired private ISqMenuService iSqMenuService; - @Autowired - private RedisUtil redisUtil; @Test public void testSerialGenerate() { - // Generate UID long cachedUidGeneratoruid = cachedUidGenerator.getUID(); long defaultUidGeneratoruid = defaultUidGenerator.getUID(); //用这个 @@ -38,11 +36,6 @@ public class UIDTest extends BaseSpringBootTest{ System.out.println("cachedUidGeneratoruid解密:"+cachedUidGenerator.parseUID(cachedUidGeneratoruid)); System.out.println("defaultUidGeneratoruid:"+defaultUidGeneratoruid); System.out.println("defaultUidGeneratoruid解密:"+cachedUidGenerator.parseUID(defaultUidGeneratoruid)); - - // Parse UID into [Timestamp, WorkerId, Sequence] - // {"UID":"450795408770","timestamp":"2019-02-20 14:55:39","workerId":"27","sequence":"2"} -// System.out.println(cachedUidGenerator.parseUID(uid)); - } @Test public void dateTest(){ @@ -64,5 +57,27 @@ public class UIDTest extends BaseSpringBootTest{ } + //密码加密 + @Test + public void rest3(){ + String newPassword = "admin123"; + String password =SecurityUtils.encryptPassword(newPassword); + System.out.println(password); + } + + + + //密码加密对比 + @Test + public void rest4(){ + String newPassword = "2654430977wh"; + if( SecurityUtils.matchesPassword(newPassword, "$2a$10$zAx2lmzBNwmL.nFqfLmps.CsrSblAPtMvy29Ns9fwzeq8hIoKLT72")){ //newPassword 密码 password加密的后密码 + System.out.println("密码相同!"); + }else{ + System.out.println("密码不相同!"); + } + } + + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index 543fe78e9..aa9d9b90c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -69,7 +69,7 @@ public class Constants /** * 手机号验证码有效期(分钟) */ - public static final Integer CAPTCHA_PHONE_EXPIRATION = 2; + public static final Integer CAPTCHA_PHONE_EXPIRATION = 15; /** * 令牌 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java index f780a7a3d..ccaba7cea 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java @@ -17,19 +17,6 @@ public class LoginBody */ private String password; - /** - * 邮箱 - */ - private String email; - /** - * 手机号 - */ - private String phone; - /** - * 手机号验证码 - */ - private String phoneCode; - /** * 验证码 */ @@ -79,28 +66,4 @@ public class LoginBody { this.uuid = uuid; } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getPhone() { - return phone; - } - - public void setPhone(String phone) { - this.phone = phone; - } - - public String getPhoneCode() { - return phoneCode; - } - - public void setPhoneCode(String phoneCode) { - this.phoneCode = phoneCode; - } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java new file mode 100644 index 000000000..d50b01a66 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java @@ -0,0 +1,106 @@ +package com.ruoyi.common.core.domain.model; + +/** + * 用户登录对象 + * + * @author ruoyi + */ +public class RegisterBody +{ + /** + * 用户名 + */ + private String username; + + /** + * 用户密码 + */ + private String password; + + /** + * 邮箱 + */ + private String email; + /** + * 手机号 + */ + private String phone; + /** + * 手机号验证码 + */ + private String phoneCode; + + /** + * 验证码 + */ + private String code; + + /** + * 唯一标识 + */ + private String uuid = ""; + + public String getUsername() + { + return username; + } + + public void setUsername(String username) + { + this.username = username; + } + + public String getPassword() + { + return password; + } + + public void setPassword(String password) + { + this.password = password; + } + + public String getCode() + { + return code; + } + + public void setCode(String code) + { + this.code = code; + } + + public String getUuid() + { + return uuid; + } + + public void setUuid(String uuid) + { + this.uuid = uuid; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPhoneCode() { + return phoneCode; + } + + public void setPhoneCode(String phoneCode) { + this.phoneCode = phoneCode; + } +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisKey.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisKey.java index 204f28423..fa54412ce 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisKey.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisKey.java @@ -12,4 +12,6 @@ public class RedisKey { public static final String BOOKMARK ="bookMark:"; public static final String CONNECTOR =":"; + + public static final String REGISTER ="register:"; } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneCode.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneCode.java index 36fbe0495..95dc19826 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneCode.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PhoneCode.java @@ -10,6 +10,7 @@ import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.redis.RedisKey; import com.ruoyi.common.core.redis.RedisUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,6 +38,7 @@ public class PhoneCode { */ public static Boolean getPhonemsg(String phone) { + String key = RedisKey.BOOKMARK + RedisKey.REGISTER + phone; // 短信验证---阿里 // 设置超时时间-可自行调整 System.setProperty(PhoneDeploy.defaultConnectTimeout, PhoneDeploy.Timeout); @@ -83,16 +85,16 @@ public class PhoneCode { if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { // 请求成功 RedisUtil redisUtil = new RedisUtil(); - redisUtil.setEx(phone,code,Constants.CAPTCHA_PHONE_EXPIRATION, TimeUnit.MINUTES); + redisUtil.setEx(key,code,Constants.CAPTCHA_PHONE_EXPIRATION, TimeUnit.MINUTES); return true; } else { // 验证码失败 如果验证码出错,会输出错误码告诉你具体原因 - logger.info("手机号:" + code + " 时间"+DateUtil.now()+" 发送失败!!错误日志:"+sendSmsResponse.getCode()); + logger.info("手机号:" + phone + " 时间"+DateUtil.now()+" 发送失败!!错误日志:"+sendSmsResponse.getCode()); return false; } } catch (ClientException e) { e.printStackTrace(); - logger.info("手机号:" + code + " 时间"+DateUtil.now()+" 发送失败!!"); + logger.info("手机号:" + phone + " 时间"+DateUtil.now()+" 发送失败!!"); return false; } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index 10531590f..1442fb9f7 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -20,7 +20,7 @@ import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; /** * spring security配置 - * + * * @author ruoyi */ @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) @@ -31,7 +31,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter */ @Autowired private UserDetailsService userDetailsService; - + /** * 认证失败处理类 */ @@ -55,7 +55,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter */ @Autowired private CorsFilter corsFilter; - + /** * 解决 无法直接注入 AuthenticationManager * @@ -98,6 +98,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter .authorizeRequests() // 对于登录login 验证码captchaImage 允许匿名访问 .antMatchers("/login", "/captchaImage").anonymous() + // 对于注册账号 手机号验证码 允许匿名访问 + .antMatchers("/registerUser", "/registerPhoneCode").anonymous() .antMatchers( HttpMethod.GET, "/*.html", @@ -125,7 +127,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class); } - + /** * 强散列哈希加密实现 */ diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index c1f795d7b..5ba65a80b 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -4,6 +4,10 @@ import javax.annotation.Resource; import cn.hutool.core.date.DateUtil; import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.redis.RedisKey; +import com.ruoyi.common.core.redis.RedisUtil; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; @@ -40,6 +44,9 @@ public class SysLoginService @Autowired private RedisCache redisCache; + @Autowired + private RedisUtil redisUtil; + @Autowired private ISysUserService sysUserService; @@ -101,36 +108,42 @@ public class SysLoginService * * @param username 用户名 * @param password 密码 - * @param code 验证码 + * @param phone 手机号 + * @param phoneCode 手机号验证码 * @param uuid 唯一标识 * @param email 邮箱 - * @param phone 手机号 * @return 结果 */ - public String registerUser(String username, String password, String code, String uuid, String email, String phone) { + public String registerUser(String username, String password, String phoneCode, String uuid, String email, String phone) { int usernameCount = sysUserService.countUserByUserName(username); if (usernameCount != 0) { - return username + "登陆账号已经存在,请更换!"; + return username + "登陆账号已经被使用,请更换!"; } int phoneCount = sysUserService.countUserByPhone(phone); if (phoneCount != 0) { - return phone + "手机账号已经存在,请更换!"; + return phone + "手机账号已经被使用,请更换!"; } - - //验证传入的手机号和验证码是否匹配 - - - - - +// String key = RedisKey.BOOKMARK + RedisKey.REGISTER + phone; +// //验证传入的手机号和验证码是否匹配 +// String redisPhoneCode = redisUtil.get(key); +// if (StringUtils.isEmpty(redisPhoneCode)){ +// return "验证码已经过期!"; +// } +// if (!redisPhoneCode.equals(phoneCode)){ +// return "验证码错误!"; +// }else { +// //验证码正确 删除验证码 不可重复使用 +// redisUtil.delete(key); +// } //加密信息存入数据库 SysUser user = new SysUser(); user.setUserName(username); - user.setPassword(password); + user.setPassword(SecurityUtils.encryptPassword(password)); user.setDeptId(100L); user.setNickName(username); + user.setPhonenumber(phone); user.setCreateTime(DateUtil.date(System.currentTimeMillis())); user.setUpdateBy("admin"); return sysUserService.insertUser(user)!=0?Constants.LOGIN_SUCCESS:Constants.LOGIN_FAIL; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index 5e33be9e9..bb3379f75 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -117,7 +117,7 @@ public interface SysUserMapper */ public int selectUserByEmail(String email); /** - * 查询登陆名称是否唯一 + * 查询登陆账号是否唯一 * * @param userName 用户名 * @return 用户对象信息 diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 838edaa61..a71f7fc72 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -87,16 +87,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/ruoyi-ui/src/api/login.js b/ruoyi-ui/src/api/login.js index 9971357ed..4404268a4 100644 --- a/ruoyi-ui/src/api/login.js +++ b/ruoyi-ui/src/api/login.js @@ -1,40 +1,69 @@ -import request from '@/utils/request' - -// 登录方法 -export function login(username, password, code, uuid) { - const data = { - username, - password, - code, - uuid - } - return request({ - url: '/login', - method: 'post', - data: data - }) -} - -// 获取用户详细信息 -export function getInfo() { - return request({ - url: '/getInfo', - method: 'get' - }) -} - -// 退出方法 -export function logout() { - return request({ - url: '/logout', - method: 'post' - }) -} - -// 获取验证码 -export function getCodeImg() { - return request({ - url: '/captchaImage', - method: 'get' - }) -} \ No newline at end of file +import request from '@/utils/request' + +// 登录方法 +export function login(username, password, code, uuid) { + const data = { + username, + password, + code, + uuid + } + return request({ + url: '/login', + method: 'post', + data: data + }) +} + +// 获取用户详细信息 +export function getInfo() { + return request({ + url: '/getInfo', + method: 'get' + }) +} + +// 退出方法 +export function logout() { + return request({ + url: '/logout', + method: 'post' + }) +} + +// 获取验证码 +export function getCodeImg() { + return request({ + url: '/captchaImage', + method: 'get' + }) +} + + +// 注册账号方法 +export function registerUser(username, password, phone, phoneCode) { + const data = { + username, + password, + phone, + phoneCode + } + return request({ + url: '/registerUser', + method: 'post', + data: data + }) +} + + +// 获取手机号验证码注册 +export function getregisterUser(phone) { + var query={ + phone:phone + } + return request({ + url: '/registerPhoneCode', + method: 'get', + params:query + }) +} diff --git a/ruoyi-ui/src/store/modules/user.js b/ruoyi-ui/src/store/modules/user.js index dd2b6dbef..454bb94b2 100644 --- a/ruoyi-ui/src/store/modules/user.js +++ b/ruoyi-ui/src/store/modules/user.js @@ -1,96 +1,112 @@ -import { login, logout, getInfo } from '@/api/login' -import { getToken, setToken, removeToken } from '@/utils/auth' - -const user = { - state: { - token: getToken(), - name: '', - avatar: '', - roles: [], - permissions: [] - }, - - mutations: { - SET_TOKEN: (state, token) => { - state.token = token - }, - SET_NAME: (state, name) => { - state.name = name - }, - SET_AVATAR: (state, avatar) => { - state.avatar = avatar - }, - SET_ROLES: (state, roles) => { - state.roles = roles - }, - SET_PERMISSIONS: (state, permissions) => { - state.permissions = permissions - } - }, - - actions: { - // 登录 - Login({ commit }, userInfo) { - const username = userInfo.username.trim() - const password = userInfo.password - const code = userInfo.code - const uuid = userInfo.uuid - return new Promise((resolve, reject) => { - login(username, password, code, uuid).then(res => { - setToken(res.token) - commit('SET_TOKEN', res.token) - resolve() - }).catch(error => { - reject(error) - }) - }) - }, - - // 获取用户信息 - GetInfo({ commit, state }) { - return new Promise((resolve, reject) => { - getInfo(state.token).then(res => { - const user = res.user - const avatar = user.avatar == "" ? require("@/assets/image/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar; - if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 - commit('SET_ROLES', res.roles) - commit('SET_PERMISSIONS', res.permissions) - } else { - commit('SET_ROLES', ['ROLE_DEFAULT']) - } - commit('SET_NAME', user.userName) - commit('SET_AVATAR', avatar) - resolve(res) - }).catch(error => { - reject(error) - }) - }) - }, - - // 退出系统 - LogOut({ commit, state }) { - return new Promise((resolve, reject) => { - logout(state.token).then(() => { - commit('SET_TOKEN', '') - commit('SET_ROLES', []) - commit('SET_PERMISSIONS', []) - removeToken() - resolve() - }).catch(error => { - reject(error) - }) - }) - }, - - // 前端 登出 - FedLogOut({ commit }) { - return new Promise(resolve => { - commit('SET_TOKEN', '') - removeToken() - resolve() - }) - } - } -} - -export default user +import { login, logout, getInfo,registerUser } from '@/api/login' +import { getToken, setToken, removeToken } from '@/utils/auth' + +const user = { + state: { + token: getToken(), + name: '', + avatar: '', + roles: [], + permissions: [] + }, + + mutations: { + SET_TOKEN: (state, token) => { + state.token = token + }, + SET_NAME: (state, name) => { + state.name = name + }, + SET_AVATAR: (state, avatar) => { + state.avatar = avatar + }, + SET_ROLES: (state, roles) => { + state.roles = roles + }, + SET_PERMISSIONS: (state, permissions) => { + state.permissions = permissions + } + }, + + actions: { + // 登录 + Login({ commit }, userInfo) { + const username = userInfo.username.trim() + const password = userInfo.password + const code = userInfo.code + const uuid = userInfo.uuid + return new Promise((resolve, reject) => { + login(username, password, code, uuid).then(res => { + setToken(res.token) + commit('SET_TOKEN', res.token) + resolve() + }).catch(error => { + reject(error) + }) + }) + }, + // 注册 + register({ commit }, userInfo) { + var that = this; + const username = userInfo.username.trim() + const password = userInfo.password + const phone = userInfo.phone + const phoneCode = userInfo.phoneCode + return new Promise((resolve, reject) => { + registerUser(username, password, phone, phoneCode).then(res => { + + resolve(res) + }).catch(error => { + reject(error) + }) + }) + }, + + // 获取用户信息 + GetInfo({ commit, state }) { + return new Promise((resolve, reject) => { + getInfo(state.token).then(res => { + const user = res.user + const avatar = user.avatar == "" ? require("@/assets/image/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar; + if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 + commit('SET_ROLES', res.roles) + commit('SET_PERMISSIONS', res.permissions) + } else { + commit('SET_ROLES', ['ROLE_DEFAULT']) + } + commit('SET_NAME', user.userName) + commit('SET_AVATAR', avatar) + resolve(res) + }).catch(error => { + reject(error) + }) + }) + }, + + // 退出系统 + LogOut({ commit, state }) { + return new Promise((resolve, reject) => { + logout(state.token).then(() => { + commit('SET_TOKEN', '') + commit('SET_ROLES', []) + commit('SET_PERMISSIONS', []) + removeToken() + resolve() + }).catch(error => { + reject(error) + }) + }) + }, + + // 前端 登出 + FedLogOut({ commit }) { + return new Promise(resolve => { + commit('SET_TOKEN', '') + removeToken() + resolve() + }) + } + } +} + +export default user diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue index 4e58e9f65..8535d58f5 100644 --- a/ruoyi-ui/src/views/login.vue +++ b/ruoyi-ui/src/views/login.vue @@ -1,7 +1,7 @@