admin_login_controller.go 2.3 KB
package controllers

import (
	"encoding/json"
	"errors"
	"fmt"
	"time"

	"github.com/GeeTeam/gt3-golang-sdk/geetest"
	"github.com/astaxie/beego/logs"
	userCmd "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/users/command"
	userService "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/users/service"
)

type AdminLoginController struct {
	BaseController
}

////Prepare 重写 BaseController 的Prepare方法
func (c *AdminLoginController) Prepare() {
	c.BaseController.Prepare()
	//排除登录 以及获取图形验证
	urlIn := map[string]int{
		"/v1/auth/captcha-init": 1,
		"/v1/auth/login":        1,
	}

	nowUrl := c.Ctx.Input.URL()
	if _, ok := urlIn[nowUrl]; ok {
		//跳过校验
		return
	}
	if ok := c.ValidJWTToken(); !ok {
		return
	}
}

func (c *AdminLoginController) Login() {
	var (
		param userCmd.LoginBySecretKeyCommand
	)
	if err := c.BindJsonData(&param); err != nil {
		c.ResponseError(fmt.Errorf("json解析失败:%s", err))
		return
	}
	newUserService := userService.NewUsersService(nil)
	resp, err := newUserService.UserLoginBySecretKey(param)
	if err != nil {
		c.ResponseError(err)
		return
	}
	c.ResponseData(resp)
	return
}

//CaptchaInit 极验初始化
func (c *AdminLoginController) CaptchaInit() {
	const (
		captchaID  = "33a2abf9c5df0d6bc3b89fb39280114b"
		privateKey = "13320fd2b10199e9a2440a4fbb4d46f7"
	)
	newGeetest := geetest.NewGeetestLib(captchaID, privateKey, 2*time.Second)
	userip := c.Ctx.Input.IP()
	_, responseBt := newGeetest.PreProcess("", userip)
	// c.SetSession("geetest_status", status)
	var geetestRsp geetest.FailbackRegisterRespnse
	json.Unmarshal(responseBt, &geetestRsp)
	//对前端定义的数据格式进行适配。。。
	rspData := map[string]interface{}{
		"success":    geetestRsp.Success,
		"gt":         geetestRsp.GT,
		"challenge":  geetestRsp.Challenge,
		"newCaptcha": geetestRsp.NewCaptcha,
	}
	c.ResponseData(rspData)
	return
}

//AdminpPofile 获取登录用户的权限配置
func (c *AdminLoginController) AdminpPofile() {
	adminId := c.GetUserId()
	newUserService := userService.NewUsersService(nil)
	respData, err := newUserService.GetUserPofile(adminId)
	if err != nil {
		logs.Error("获取用户数据失败:%s", err)
		c.ResponseError(errors.New("用户不存在"))
		return
	}
	c.ResponseData(respData)
	return
}