支持手机号码、邮箱登录

This commit is contained in:
RuoYi
2018-05-18 23:20:19 +08:00
parent a624ac009e
commit fab59267ed
17 changed files with 360 additions and 48 deletions

View File

@ -29,9 +29,33 @@ public class UserConstants
public static final int USERNAME_MIN_LENGTH = 2;
public static final int USERNAME_MAX_LENGTH = 20;
/** 名称是否唯一的返回结果码 */
public final static String NAME_UNIQUE = "0";
public final static String NAME_NOT_UNIQUE = "1";
/** 登录名称是否唯一的返回结果码 */
public final static String USER_NAME_UNIQUE = "0";
public final static String USER_NAME_NOT_UNIQUE = "1";
/** 手机号码是否唯一的返回结果 */
public final static String USER_PHONE_UNIQUE = "0";
public final static String USER_PHONE_NOT_UNIQUE = "1";
/** e-mail 是否唯一的返回结果 */
public final static String USER_EMAIL_UNIQUE = "0";
public final static String USER_EMAIL_NOT_UNIQUE = "1";
/** 部门名称是否唯一的返回结果码 */
public final static String DEPT_NAME_UNIQUE = "0";
public final static String DEPT_NAME_NOT_UNIQUE = "1";
/** 角色名称是否唯一的返回结果码 */
public final static String ROLE_NAME_UNIQUE = "0";
public final static String ROLE_NAME_NOT_UNIQUE = "1";
/** 菜单名称是否唯一的返回结果码 */
public final static String MENU_NAME_UNIQUE = "0";
public final static String MENU_NAME_NOT_UNIQUE = "1";
/** 字典类型是否唯一的返回结果码 */
public final static String DICT_TYPE_UNIQUE = "0";
public final static String DICT_TYPE_NOT_UNIQUE = "1";
/**
* 密码长度限制
@ -39,4 +63,14 @@ public class UserConstants
public static final int PASSWORD_MIN_LENGTH = 5;
public static final int PASSWORD_MAX_LENGTH = 20;
/**
* 手机号码格式限制
*/
public static final String MOBILE_PHONE_NUMBER_PATTERN = "^0{0,1}(13[0-9]|15[0-9]|14[0-9]|18[0-9])[0-9]{8}$";
/**
* 邮箱格式限制
*/
public static final String EMAIL_PATTERN = "^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?";
}

View File

@ -64,8 +64,18 @@ public class LoginService
}
// 查询用户信息
User user = userService.selectUserByName(username);
User user = userService.selectUserByLoginName(username);
if (user == null && maybeMobilePhoneNumber(username))
{
user = userService.selectUserByPhoneNumber(username);
}
if (user == null && maybeEmail(username))
{
user = userService.selectUserByEmail(username);
}
if (user == null)
{
SystemLogUtils.log(username, CommonConstant.LOGIN_FAIL, MessageUtils.message("user.not.exists"));
@ -79,9 +89,27 @@ public class LoginService
SystemLogUtils.log(username, CommonConstant.LOGIN_FAIL, MessageUtils.message("user.blocked", user.getRefuseDes()));
throw new UserBlockedException(user.getRefuseDes());
}
SystemLogUtils.log(username, CommonConstant.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
return user;
}
private boolean maybeEmail(String username)
{
if (!username.matches(UserConstants.EMAIL_PATTERN))
{
return false;
}
return true;
}
private boolean maybeMobilePhoneNumber(String username)
{
if (!username.matches(UserConstants.MOBILE_PHONE_NUMBER_PATTERN))
{
return false;
}
return true;
}
}

View File

@ -145,8 +145,8 @@ public class DeptServiceImpl implements IDeptService
if (StringUtils.isNotNull(info) && StringUtils.isNotNull(info.getDeptId())
&& info.getDeptId().longValue() != deptId.longValue())
{
return UserConstants.NAME_NOT_UNIQUE;
return UserConstants.DEPT_NAME_NOT_UNIQUE;
}
return UserConstants.NAME_UNIQUE;
return UserConstants.DEPT_NAME_UNIQUE;
}
}

View File

@ -107,8 +107,8 @@ public class DictTypeServiceImpl implements IDictTypeService
DictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType());
if (StringUtils.isNotNull(dictType) && dictType.getDictId() != dictId)
{
return UserConstants.NAME_NOT_UNIQUE;
return UserConstants.DICT_TYPE_NOT_UNIQUE;
}
return UserConstants.NAME_UNIQUE;
return UserConstants.DICT_TYPE_UNIQUE;
}
}

View File

@ -267,9 +267,9 @@ public class MenuServiceImpl implements IMenuService
if (StringUtils.isNotNull(info) && StringUtils.isNotNull(info.getMenuId())
&& info.getMenuId().longValue() != menuId.longValue())
{
return UserConstants.NAME_NOT_UNIQUE;
return UserConstants.MENU_NAME_NOT_UNIQUE;
}
return UserConstants.NAME_UNIQUE;
return UserConstants.MENU_NAME_UNIQUE;
}
}

View File

@ -205,9 +205,9 @@ public class RoleServiceImpl implements IRoleService
Role info = roleMapper.checkRoleNameUnique(role.getRoleName());
if (StringUtils.isNotNull(info) && StringUtils.isNotNull(info.getRoleId()) && info.getRoleId() != roleId)
{
return UserConstants.NAME_NOT_UNIQUE;
return UserConstants.ROLE_NAME_NOT_UNIQUE;
}
return UserConstants.NAME_UNIQUE;
return UserConstants.ROLE_NAME_UNIQUE;
}
/**

View File

@ -171,16 +171,46 @@ public class UserController extends BaseController
/**
* 校验用户名
*/
@PostMapping("/checkUserNameUnique")
@PostMapping("/checkLoginNameUnique")
@ResponseBody
public String checkUserNameUnique(User user)
public String checkLoginNameUnique(User user)
{
String uniqueFlag = "0";
if (user != null)
{
uniqueFlag = userService.checkUserNameUnique(user.getLoginName());
uniqueFlag = userService.checkLoginNameUnique(user.getLoginName());
}
return uniqueFlag;
}
/**
* 校验手机号码
*/
@PostMapping("/checkPhoneUnique")
@ResponseBody
public String checkPhoneUnique(User user)
{
String uniqueFlag = "0";
if (user != null)
{
uniqueFlag = userService.checkPhoneUnique(user);
}
return uniqueFlag;
}
/**
* 校验手机号码
*/
@PostMapping("/checkEmailUnique")
@ResponseBody
public String checkEmailUnique(User user)
{
String uniqueFlag = "0";
if (user != null)
{
uniqueFlag = userService.checkEmailUnique(user);
}
return uniqueFlag;
}
}

View File

@ -25,7 +25,23 @@ public interface UserMapper
* @param userName 用户名
* @return 用户对象信息
*/
public User selectUserByName(String userName);
public User selectUserByLoginName(String userName);
/**
* 通过手机号码查询用户
*
* @param userName 用户名
* @return 用户对象信息
*/
public User selectUserByPhoneNumber(String phoneNumber);
/**
* 通过邮箱查询用户
*
* @param email 邮箱
* @return 用户对象信息
*/
public User selectUserByEmail(String email);
/**
* 通过用户ID查询用户
@ -73,6 +89,23 @@ public interface UserMapper
* @param loginName 登录名称
* @return 结果
*/
public int checkUserNameUnique(String loginName);
public int checkLoginNameUnique(String loginName);
/**
* 校验手机号码是否唯一
*
* @param phonenumber 手机号码
* @return 结果
*/
public User checkPhoneUnique(String phonenumber);
/**
* 校验email是否唯一
*
* @param email 用户邮箱
* @return 结果
*/
public User checkEmailUnique(String email);
}

View File

@ -25,7 +25,23 @@ public interface IUserService
* @param userName 用户名
* @return 用户对象信息
*/
public User selectUserByName(String userName);
public User selectUserByLoginName(String userName);
/**
* 通过手机号码查询用户
*
* @param userName 用户名
* @return 用户对象信息
*/
public User selectUserByPhoneNumber(String phoneNumber);
/**
* 通过邮箱查询用户
*
* @param email 邮箱
* @return 用户对象信息
*/
public User selectUserByEmail(String email);
/**
* 通过用户ID查询用户
@ -81,7 +97,25 @@ public interface IUserService
* @param loginName 登录名称
* @return 结果
*/
public String checkUserNameUnique(String loginName);
public String checkLoginNameUnique(String loginName);
/**
* 校验手机号码是否唯一
*
* @param phonenumber 登录名称
* @return 结果
*/
public String checkPhoneUnique(User user);
/**
* 校验email是否唯一
*
* @param email 登录名称
* @return 结果
*/
public String checkEmailUnique(User user);
/**
* 根据用户ID查询用户所属角色组

View File

@ -66,9 +66,33 @@ public class UserServiceImpl implements IUserService
* @return 用户对象信息
*/
@Override
public User selectUserByName(String userName)
public User selectUserByLoginName(String userName)
{
return userMapper.selectUserByName(userName);
return userMapper.selectUserByLoginName(userName);
}
/**
* 通过手机号码查询用户
*
* @param userName 用户名
* @return 用户对象信息
*/
@Override
public User selectUserByPhoneNumber(String phoneNumber)
{
return userMapper.selectUserByPhoneNumber(phoneNumber);
}
/**
* 通过邮箱查询用户
*
* @param email 邮箱
* @return 用户对象信息
*/
@Override
public User selectUserByEmail(String email)
{
return userMapper.selectUserByEmail(email);
}
/**
@ -227,18 +251,56 @@ public class UserServiceImpl implements IUserService
/**
* 校验用户名称是否唯一
*
* @param userName 用户名
* @param loginName 用户名
* @return
*/
@Override
public String checkUserNameUnique(String loginName)
public String checkLoginNameUnique(String loginName)
{
int count = userMapper.checkUserNameUnique(loginName);
int count = userMapper.checkLoginNameUnique(loginName);
if (count > 0)
{
return UserConstants.NAME_NOT_UNIQUE;
return UserConstants.USER_NAME_NOT_UNIQUE;
}
return UserConstants.NAME_UNIQUE;
return UserConstants.USER_NAME_UNIQUE;
}
/**
* 校验用户名称是否唯一
*
* @param phonenumber 用户名
* @return
*/
@Override
public String checkPhoneUnique(User user)
{
Long userId = user.getUserId();
User info = userMapper.checkPhoneUnique(user.getPhonenumber());
if (StringUtils.isNotNull(info) && StringUtils.isNotNull(info.getUserId())
&& info.getUserId().longValue() != userId.longValue())
{
return UserConstants.USER_PHONE_NOT_UNIQUE;
}
return UserConstants.USER_PHONE_UNIQUE;
}
/**
* 校验email是否唯一
*
* @param email 用户名
* @return
*/
@Override
public String checkEmailUnique(User user)
{
Long userId = user.getUserId();
User info = userMapper.checkEmailUnique(user.getEmail());
if (StringUtils.isNotNull(info) && StringUtils.isNotNull(info.getUserId())
&& info.getUserId().longValue() != userId.longValue())
{
return UserConstants.USER_EMAIL_NOT_UNIQUE;
}
return UserConstants.USER_EMAIL_UNIQUE;
}
/**