package com.iplatform.base;
import com.iplatform.base.exception.LoginException;
import com.iplatform.base.pojo.RequestLogin;
import com.iplatform.model.po.S_user_core;
import com.walker.web.UserPrincipal;
import java.util.List;
import java.util.Map;
/**
* 安全提供者接口定义。
* 通过该接口使得 iplatform-base-security 模块可以解耦。
* @author 时克英
* @date 2022-11-11
*/
public interface SecuritySpi {
/**
* 返回当前登录用户具有的角色ID集合。
* @return
*/
List getCurrentUserRoleIdList();
/**
* 返回当前登录用户凭证信息
* @return
*/
UserPrincipal getCurrentUserPrincipal();
/**
* 返回当前登录用户对象
* @return
*/
S_user_core getCurrentUser();
/**
* 返回当前登录用户ID
* @return
*/
long getCurrentUserId();
/**
* 加密给定的明文密码
* @param password
* @return 返回密文密码
*/
String encryptPassword(String password);
/**
* 比较给定的密码是否与加密相等。
* @param rawPassword 原始明文密码
* @param encodedPassword 加密的密码
* @return
*/
boolean matchesPassword(String rawPassword, String encodedPassword);
/**
* 是否允许移动端,在登录时手机号不存在直接注册?
* @return
* @date 2023-06-28
*/
boolean isAllowMobileLoginRegister();
/**
* 用户登录系统过程方法,抽取该方法可以在自定义登录中灵活使用。
* @param requestLogin
* @return
* @throws LoginException 登录异常抛出提示错误
* @date 2023-06-28
*/
Map login(RequestLogin requestLogin) throws LoginException;
/**
* 以流程角色登录获取权限,activiti7专用,后续会废弃。
* @author 时克英
* @date 2023-03-21
*/
@Deprecated
void loginAsWorkflowRole();
}