package com.hzs.common.security.auth;

import com.hzs.common.core.utils.SpringUtils;
import com.hzs.common.security.service.MemberTokenService;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.member.base.dto.LoginMember;

/**
 * Token 权限验证，逻辑实现类
 *
 * @author hzs
 */
public class AuthMemberLogic {

    public MemberTokenService memberTokenService = SpringUtils.getBean(MemberTokenService.class);

    /**
     * 会话注销
     */
    public void logout() {
        String token = SecurityUtils.getToken();
        if (token == null) {
            return;
        }
        logoutByToken(token);
    }

    /**
     * 会话注销，根据指定Token
     */
    public void logoutByToken(String token) {
        memberTokenService.delLoginMember(token);
    }

    /**
     * 获取当前用户缓存信息, 如果未登录，则抛出异常
     *
     * @param token 前端传递的认证信息
     * @return 用户缓存信息
     */
    public LoginMember getLoginMember(String token) {
        return memberTokenService.getLoginMember(token);
    }

    /**
     * 验证当前用户有效期, 如果相差不足120分钟，自动刷新缓存
     *
     * @param loginMember 当前用户信息
     */
    public void verifyLoginMemberExpire(LoginMember loginMember) {
        memberTokenService.verifyToken(loginMember);
    }

}
