package com.wxs.controller;

import com.wxs.controller.common.GlobalConstant;
import com.wxs.po.Userlogin;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Author: jitwxs
 * Date: 2017-10-10
 * 登陆Controller层
 */
@Controller
public class LoginController {

    /**
     * 登录跳转
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/login", method = {RequestMethod.GET})
    public String loginUI() throws Exception {
        return "../../login";
    }

    /**
     * 登录表单处理
     * @param userlogin Userlogin对象
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/login", method = {RequestMethod.POST})
    public String login(Userlogin userlogin) throws Exception {

        //Shiro实现登录
        UsernamePasswordToken token = new UsernamePasswordToken(userlogin.getName(),
                userlogin.getPassword());
        Subject subject = SecurityUtils.getSubject();

        //如果获取不到用户名就是登录失败,但登录失败的话,会直接抛出异常
        subject.login(token);

        //所有用户均重定向对应的展示课程页面
        if (subject.hasRole(GlobalConstant.ROle_Type.ADMIN.getName())) {
            return "redirect:/admin/showCourse";
        } else if (subject.hasRole(GlobalConstant.ROle_Type.TEACHER.getName())) {
            return "redirect:/teacher/showCourse";
        } else if (subject.hasRole(GlobalConstant.ROle_Type.STUDENT.getName())) {
            return "redirect:/student/showCourse";
        }

        return "../../login";
    }

}