package com.mossle.security.spi;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
/**
* 从我们的设计理念来讲,用户数据中心可能和权限控制模块是分离的两个模块, 所以每次用户登录时,都要先判断远程的用户是否存在,然后判断用户状态, 如果两者都没有问题,要么创建一个新用户,要么更新当前用户状态。
*/
public interface UserStatusFetcher {
int STATUS_ENABLE = 0;
int STATUS_ACCOUNT_EXPIRED = 1;
int STATUS_ACCOUNT_LOCKED = 1 << 1;
int STATUS_CREDENTAIL_EXPIRED = 1 << 2;
/**
* 根据用户名获得用户状态.
*
* 如果用户存在,就会返回一个状态 如果用户不存在,就会抛出异常
*/
int getUserStatus(String username) throws UsernameNotFoundException;
}