Search in sources :

Example 1 with UserVo

use of com.albedo.java.modules.sys.domain.vo.UserVo in project albedo by somowhere.

the class UserDetailsServiceImpl method loadUserByUsername.

/**
 * 用户密码登录
 *
 * @param username 用户名
 * @return
 */
@Override
@SneakyThrows
public UserDetails loadUserByUsername(String username) {
    UserVo userVo = userService.findVoByUsername(username);
    ArgumentAssert.notNull(userVo, () -> new UsernameNotFoundException("用户不存在"));
    ArgumentAssert.isTrue(userVo.isAvailable(), "用户【" + username + "】已被锁定,无法登录");
    UserDetails userDetails = getUserDetails(userService.getInfo(userVo));
    return userDetails;
}
Also used : UsernameNotFoundException(org.springframework.security.core.userdetails.UsernameNotFoundException) UserDetails(org.springframework.security.core.userdetails.UserDetails) UserVo(com.albedo.java.modules.sys.domain.vo.UserVo) SneakyThrows(lombok.SneakyThrows)

Example 2 with UserVo

use of com.albedo.java.modules.sys.domain.vo.UserVo in project albedo by somowhere.

the class LogLoginServiceImpl method save.

@Override
public boolean save(LogLoginDo logLoginDo) {
    UserVo user;
    Long userId = logLoginDo.getUserId();
    String username = logLoginDo.getUsername();
    if (userId != null) {
        user = this.userService.findUserVoById(userId);
    } else {
        user = this.userService.findVoByUsername(username);
    }
    if (user != null) {
        logLoginDo.setUsername(user.getUsername()).setUserId(user.getId()).setNickname(user.getNickname()).setCreatedBy(user.getId());
    }
    super.save(logLoginDo);
    LocalDate now = LocalDate.now();
    String tenDaysAgo = LocalDateTimeUtil.formatNormal(now.plusDays(-9));
    CacheKey totalLoginPvKey = TotalLoginPvCacheKeyBuilder.build();
    CacheKey todayLoginPvKey = TodayLoginPvCacheKeyBuilder.build(now);
    // 登录IV
    CacheKey totalLoginIvKey = TotalLoginIvCacheKeyBuilder.build();
    CacheKey todayLoginIvKey = TodayLoginIvCacheKeyBuilder.build(now);
    CacheKey logLoginTenDayKey = new LogLoginTenDayCacheKeyBuilder().key(tenDaysAgo);
    CacheKey logLoginBrowserKey = new LogLoginBrowserCacheKeyBuilder().key();
    CacheKey logLoginSystemKey = new LogLoginSystemCacheKeyBuilder().key();
    cacheOps.del(totalLoginPvKey);
    cacheOps.del(todayLoginPvKey);
    cacheOps.del(todayLoginIvKey);
    cacheOps.del(totalLoginIvKey);
    cacheOps.del(logLoginTenDayKey);
    cacheOps.del(logLoginBrowserKey);
    cacheOps.del(logLoginSystemKey);
    if (user != null) {
        CacheKey logLoginTenDayUserKey = new LogLoginTenDayCacheKeyBuilder().key(tenDaysAgo, user.getUsername());
        cacheOps.del(logLoginTenDayUserKey);
    }
    return true;
}
Also used : UserVo(com.albedo.java.modules.sys.domain.vo.UserVo) LocalDate(java.time.LocalDate) CacheKey(com.albedo.java.common.core.cache.model.CacheKey)

Example 3 with UserVo

use of com.albedo.java.modules.sys.domain.vo.UserVo in project albedo by somowhere.

the class UserServiceImpl method findPage.

/**
 * 分页查询用户信息(含有角色信息)
 *
 * @param pageModel 分页对象
 * @return
 */
@Override
@Transactional(readOnly = true, rollbackFor = Exception.class)
public IPage<UserVo> findPage(PageModel pageModel, UserQueryCriteria userQueryCriteria, DataScope dataScope) {
    QueryWrapper wrapper = QueryWrapperUtil.getWrapper(pageModel, userQueryCriteria);
    IPage<UserVo> userVosPage = repository.findUserVoPage(pageModel, wrapper, dataScope);
    return userVosPage;
}
Also used : UserVo(com.albedo.java.modules.sys.domain.vo.UserVo) QueryWrapper(com.baomidou.mybatisplus.core.conditions.query.QueryWrapper) Transactional(org.springframework.transaction.annotation.Transactional)

Example 4 with UserVo

use of com.albedo.java.modules.sys.domain.vo.UserVo in project albedo by somowhere.

the class UserDetailsServiceImpl method getUserDetails.

/**
 * 构建userdetails
 *
 * @param userInfo 用户信息
 * @return
 */
private UserDetails getUserDetails(UserInfo userInfo) {
    ArgumentAssert.notNull(userInfo, () -> new UsernameNotFoundException("用户不存在"));
    Set<String> dbAuthsSet = new HashSet<>();
    if (ArrayUtil.isNotEmpty(userInfo.getRoles())) {
        // 获取角色
        Arrays.stream(userInfo.getRoles()).forEach(role -> dbAuthsSet.add(SecurityConstants.ROLE + role));
        // 获取资源
        dbAuthsSet.addAll(Arrays.asList(userInfo.getPermissions()));
    }
    List<GrantedAuthority> authorities = AuthUtil.createAuthorityList(dbAuthsSet.toArray(new String[0]));
    UserVo userVo = userInfo.getUser();
    DataScope dataScope = new DataScope();
    if (CollUtil.isNotEmpty(userVo.getRoleDoList())) {
        for (RoleDo roleDo : userVo.getRoleDoList()) {
            if (DataScopeType.ALL.eq(roleDo.getDataScope())) {
                dataScope.setAll(true);
                break;
            } else if (DataScopeType.THIS_LEVEL_CHILDREN.eq(roleDo.getDataScope())) {
                dataScope.getDeptIds().addAll(deptService.findDescendantIdList(userVo.getDeptId()));
            } else if (DataScopeType.THIS_LEVEL.eq(roleDo.getDataScope())) {
                dataScope.getDeptIds().add(userVo.getDeptId());
            } else if (DataScopeType.SELF.eq(roleDo.getDataScope())) {
                dataScope.setSelf(true);
                dataScope.setUserId(userVo.getId());
            } else if (DataScopeType.CUSTOMIZE.eq(roleDo.getDataScope())) {
                dataScope.getDeptIds().addAll(roleService.findDeptIdsByRoleId(roleDo.getId()));
            }
        }
    }
    // 构造security用户
    return new UserDetail(userVo.getId(), userVo.getDeptId(), userVo.getDeptName(), userVo.getUsername(), SecurityConstants.BCRYPT + userVo.getPassword(), userVo.isAvailable(), true, true, true, authorities, dataScope);
}
Also used : UsernameNotFoundException(org.springframework.security.core.userdetails.UsernameNotFoundException) DataScope(com.albedo.java.plugins.database.mybatis.datascope.DataScope) UserVo(com.albedo.java.modules.sys.domain.vo.UserVo) GrantedAuthority(org.springframework.security.core.GrantedAuthority) RoleDo(com.albedo.java.modules.sys.domain.RoleDo) HashSet(java.util.HashSet)

Example 5 with UserVo

use of com.albedo.java.modules.sys.domain.vo.UserVo in project albedo by somowhere.

the class UserResource method info.

/**
 * 获取当前用户全部信息
 *
 * @return 用户信息
 */
@GetMapping(value = { "/info" })
public Result<UserInfo> info() {
    String username = SecurityUtil.getUser().getUsername();
    UserVo userVo = userService.findVoByUsername(username);
    if (userVo == null) {
        return Result.buildFail("获取当前用户信息失败");
    }
    return Result.buildOkData(userService.getInfo(userVo));
}
Also used : UserVo(com.albedo.java.modules.sys.domain.vo.UserVo)

Aggregations

UserVo (com.albedo.java.modules.sys.domain.vo.UserVo)5 UsernameNotFoundException (org.springframework.security.core.userdetails.UsernameNotFoundException)2 CacheKey (com.albedo.java.common.core.cache.model.CacheKey)1 RoleDo (com.albedo.java.modules.sys.domain.RoleDo)1 DataScope (com.albedo.java.plugins.database.mybatis.datascope.DataScope)1 QueryWrapper (com.baomidou.mybatisplus.core.conditions.query.QueryWrapper)1 LocalDate (java.time.LocalDate)1 HashSet (java.util.HashSet)1 SneakyThrows (lombok.SneakyThrows)1 GrantedAuthority (org.springframework.security.core.GrantedAuthority)1 UserDetails (org.springframework.security.core.userdetails.UserDetails)1 Transactional (org.springframework.transaction.annotation.Transactional)1