package com.starry.admin.modules.system.service;

import com.starry.admin.common.domain.LoginUser;
import com.starry.admin.modules.system.module.entity.SysUserEntity;
import java.util.Set;

/**
 * @author admin
 */
public interface LoginService {

    /**
     * 登录功能
     *
     * @param username
     *            用户名
     * @param password
     *            密码
     * @return 生成的JWT的token
     */
    String login(String username, String password);

    /**
     * 获取菜单数据权限
     *
     * @param user
     *            用户信息
     * @return 菜单权限信息
     */
    Set<String> getMenuPermission(SysUserEntity user);

    /**
     * 获取角色数据权限
     *
     * @param user
     *            用户信息
     * @return 角色权限信息
     */
    Set<String> getRolePermission(SysUserEntity user);

    /**
     * 租户登录功能
     *
     * @param tenantkey
     *            租户标识
     * @param username
     *            用户名
     * @param password
     *            密码
     * @return 生成的JWT的token
     */
    LoginUser tenantLogin(String tenantkey, String username, String password);

    /**
     * 登录功能
     *
     * @param username
     *            用户名
     * @param password
     *            密码
     * @param tenantKey
     * @return 生成的JWT的token
     */
    LoginUser newLogin(String username, String password, String tenantKey);

    /**
     * 新登录功能，增加租户相关
     *
     * @param userName
     *            用户名
     * @param tenantId
     * @return 获取信息
     */
    LoginUser getLoginUserInfo(String userName, String tenantId);

    LoginUser getLoginUserInfo(String userId);
}
