admin_login_controller.go
2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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(¶m); 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
}