Search in sources :

Example 1 with SysUser

use of top.longmarch.lmsys.entity.SysUser in project longmarch by yuyueqty.

the class DefaultUserDetailServiceImpl method getUserDetailByUserName.

@Override
public UserDetail getUserDetailByUserName(String username) {
    SysUser sysUser = sysUserService.getUserByUsername(username);
    if (sysUser == null) {
        throw new AccountException("账号不存在");
    }
    if (StatusEnum.no(sysUser.getStatus())) {
        throw new AccountException("账号已停用");
    }
    if (shiroProperties.getLockByDb()) {
        if (StatusEnum.ok(sysUser.getLockStatus())) {
            throw new AccountException("错误次数超过限制,账号已被锁定,请联系管理员解锁");
        }
    } else {
        Object lock = CacheUtil.get(String.format(Constant.ACCOUNT_LOGIN_TRY_LOCK, username));
        if (lock != null) {
            throw new AccountException(String.format("错误次数超过限制,账号已被锁定%s分钟", Constant.ACCOUNT_LOGIN_TRY_NUM_TIME_OUT / 60));
        }
    }
    UserDetail userDetail = new UserDetail();
    userDetail.setUserId(sysUser.getId());
    userDetail.setPassword(sysUser.getPassword());
    userDetail.setUsername(sysUser.getUsername());
    return userDetail;
}
Also used : UserDetail(top.longmarch.lmcore.shiro.api.bean.UserDetail) SysUser(top.longmarch.lmsys.entity.SysUser) AccountException(org.apache.shiro.authc.AccountException)

Example 2 with SysUser

use of top.longmarch.lmsys.entity.SysUser in project longmarch by yuyueqty.

the class ActiveUserServiceImpl method getActiveUserInfoByUserId.

@Override
public ActivityUserDetail getActiveUserInfoByUserId(Long userId) {
    Cache<Object, Object> activeSessionCache = cacheManager.getCache(Constant.ACTIVITY_USER_CACHE);
    String userIdKey = String.valueOf(userId);
    if (activeSessionCache.get(userIdKey) != null) {
        return (ActivityUserDetail) activeSessionCache.get(userIdKey);
    }
    ActivityUserDetail activityUserDetail = new ActivityUserDetail();
    SysUser sysUser = sysUserService.getById(userId);
    if (sysUser == null) {
        return activityUserDetail;
    }
    activityUserDetail.setUserId(userId);
    activityUserDetail.setUsername(sysUser.getUsername());
    activityUserDetail.setNickname(sysUser.getNickname());
    activityUserDetail.setAvatar(sysUser.getAvatar());
    CoreEnums.Abc abc = CoreEnums.Abc.abc(sysUser.getAbc());
    activityUserDetail.setAbc(abc.getCode());
    activityUserDetail.setDeptId(sysUser.getDeptId());
    activityUserDetail.setRoles(userDetailService.getRoleByUserId(userId, abc));
    activityUserDetail.setAuthScopeEnum(userDetailService.getRoleAuthScopeByUserId(userId, abc));
    activityUserDetail.setRoutes(userDetailService.getRouteByUserId(userId, abc));
    activityUserDetail.setPermissions(userDetailService.getPermissionStrByUserId(userId, abc));
    // 设置用户数据权限值
    setDataAuthValue(activityUserDetail, sysUser);
    activeSessionCache.put(userIdKey, activityUserDetail);
    return activityUserDetail;
}
Also used : SysUser(top.longmarch.lmsys.entity.SysUser) ActivityUserDetail(top.longmarch.lmcore.shiro.api.bean.ActivityUserDetail) CoreEnums(top.longmarch.lmcore.enums.CoreEnums)

Example 3 with SysUser

use of top.longmarch.lmsys.entity.SysUser in project longmarch by yuyueqty.

the class ActiveUserServiceImpl method getActiveUserSessionList.

@Override
public List<ActiveUserSession> getActiveUserSessionList() {
    List<ActiveUserSession> activeUserSessionList = new ArrayList<>();
    List<SysUser> sysUserList = sysUserService.list();
    if (CollectionUtil.isNotEmpty(sysUserList)) {
        for (SysUser sysUser : sysUserList) {
            ActiveUserSession activeUserSession = null;
            for (SimpleSession simpleSession : SessionUtil.getSessionList()) {
                Object userId = simpleSession.getAttribute(Constant.USER_ID);
                if (sysUser.getId().equals(userId)) {
                    activeUserSession = new ActiveUserSession(simpleSession);
                    if (activeUserSession.getOnline()) {
                        activeUserSession.setUserId(String.valueOf(sysUser.getId()));
                        activeUserSession.setUsername(sysUser.getUsername());
                        break;
                    }
                }
            }
            if (activeUserSession == null) {
                activeUserSession = new ActiveUserSession(sysUser);
            }
            List<MyMessage> myMessages = WebSocketService.get(activeUserSession.getUserId() + "-" + UserUtil.getUserId());
            if (CollectionUtil.isNotEmpty(myMessages)) {
                activeUserSession.setPeople(myMessages.size());
            } else {
                activeUserSession.setPeople(0);
            }
            activeUserSessionList.add(activeUserSession);
        }
    }
    return activeUserSessionList;
}
Also used : ActiveUserSession(top.longmarch.lmcore.shiro.api.bean.ActiveUserSession) SysUser(top.longmarch.lmsys.entity.SysUser) ArrayList(java.util.ArrayList) SimpleSession(org.apache.shiro.session.mgt.SimpleSession) MyMessage(top.longmarch.message.websocket.MyMessage)

Example 4 with SysUser

use of top.longmarch.lmsys.entity.SysUser in project longmarch by yuyueqty.

the class CustomRealm method doGetAuthorizationInfo.

@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
    SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
    UserDetail userDetail = (UserDetail) principals.getPrimaryPrincipal();
    if (log.isDebugEnabled()) {
        log.debug("开始校验用户{}权限", userDetail.getUsername());
    }
    SysUser sysuser = userDetailService.getSysUserById(userDetail.getUserId());
    if (sysuser == null) {
        return simpleAuthorizationInfo;
    }
    Set<String> permissionStringSet = userDetailService.getPermissionStrByUserId(userDetail.getUserId(), CoreEnums.Abc.abc(sysuser.getAbc()));
    // 所有用户默认拥有【activity:user:info】权限
    permissionStringSet.add(Constant.ACTIVITY_USER_INFO);
    simpleAuthorizationInfo.setStringPermissions(permissionStringSet);
    return simpleAuthorizationInfo;
}
Also used : UserDetail(top.longmarch.lmcore.shiro.api.bean.UserDetail) SimpleAuthorizationInfo(org.apache.shiro.authz.SimpleAuthorizationInfo) SysUser(top.longmarch.lmsys.entity.SysUser)

Example 5 with SysUser

use of top.longmarch.lmsys.entity.SysUser in project longmarch by yuyueqty.

the class SysUserServiceImpl method unlock.

@Override
public Boolean unlock(Long userId) {
    SysUser sysUser = getById(userId);
    if (sysUser == null) {
        throw new BusinessException(5000, "账号不存在");
    }
    CacheUtil.remove(String.format(Constant.ACCOUNT_LOGIN_TRY_LOCK, sysUser.getUsername()));
    SysUser sysUserUpdate = new SysUser();
    sysUserUpdate.setId(userId);
    sysUserUpdate.setLockStatus(StatusEnum.YES.getCode());
    return this.updateById(sysUserUpdate);
}
Also used : BusinessException(top.longmarch.lmcore.exception.BusinessException) SysUser(top.longmarch.lmsys.entity.SysUser)

Aggregations

SysUser (top.longmarch.lmsys.entity.SysUser)17 LambdaQueryWrapper (com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper)4 Transactional (org.springframework.transaction.annotation.Transactional)3 BusinessException (top.longmarch.lmcore.exception.BusinessException)3 ActivityUserDetail (top.longmarch.lmcore.shiro.api.bean.ActivityUserDetail)2 UserDetail (top.longmarch.lmcore.shiro.api.bean.UserDetail)2 JSONObject (cn.hutool.json.JSONObject)1 ArrayList (java.util.ArrayList)1 AccountException (org.apache.shiro.authc.AccountException)1 SimpleAuthorizationInfo (org.apache.shiro.authz.SimpleAuthorizationInfo)1 SimpleSession (org.apache.shiro.session.mgt.SimpleSession)1 ParamCacheBean (top.longmarch.lmcore.cache.ParamCacheBean)1 CoreEnums (top.longmarch.lmcore.enums.CoreEnums)1 ActiveUserSession (top.longmarch.lmcore.shiro.api.bean.ActiveUserSession)1 ShiroUsernamePasswordToken (top.longmarch.lmcore.shiro.config.ShiroUsernamePasswordToken)1 RegisterInfo (top.longmarch.lmcore.shiro.model.RegisterInfo)1 MyMessage (top.longmarch.message.websocket.MyMessage)1