Files
kami_boss/controllers/totpController.go
2023-11-20 15:47:51 +08:00

122 lines
2.0 KiB
Go

package controllers
import (
"boss/datas"
"boss/models/user"
"boss/utils/mfa"
"github.com/beego/beego/v2/server/web"
)
type TotpQuery struct {
web.Controller
}
func (c *TotpQuery) GenTotp() {
userID, ok := c.GetSession("userID").(string)
if !ok {
c.Data["json"] = datas.BaseDataJSON{
Code: -1,
Msg: "提交信息错误",
}
_ = c.ServeJSON()
return
}
userInfo := user.GetUserInfoByUserID(userID)
if userInfo.UserId == "" {
c.Data["json"] = datas.BaseDataJSON{
Code: -1,
Msg: "当前用户不存在",
}
_ = c.ServeJSON()
return
}
otp, err := mfa.GetOtp(userInfo.UserId, userInfo.Nick)
if err != nil {
c.Data["json"] = datas.BaseDataJSON{
Code: -1,
Msg: "当前用户不存在",
}
_ = c.ServeJSON()
return
}
c.Data["json"] = datas.KeyDataJSON2{
KeyDataJSON: datas.KeyDataJSON{
Code: 0,
Msg: "成功",
Key: "",
},
Data: otp,
}
_ = c.ServeJSON()
}
func (c *TotpQuery) SaveTotp() {
code := c.GetString("code")
secret := c.GetString("secret")
if code == "" || secret == "" {
c.Data["json"] = datas.BaseDataJSON{
Code: -1,
Msg: "提交消息不准确",
}
_ = c.ServeJSON()
return
}
userID, ok := c.GetSession("userID").(string)
if !ok {
c.Data["json"] = datas.BaseDataJSON{
Code: -1,
Msg: "提交信息错误",
}
_ = c.ServeJSON()
return
}
userInfo := user.GetUserInfoByUserID(userID)
if userInfo.UserId == "" {
c.Data["json"] = datas.BaseDataJSON{
Code: -1,
Msg: "当前用户不存在",
}
_ = c.ServeJSON()
return
}
ok = mfa.ValidCode(code, secret)
if !ok {
c.Data["json"] = datas.KeyDataJSON{
Code: -1,
Msg: "code验证错误",
}
_ = c.ServeJSON()
return
}
err2 := user.UpdateOtpByUserID(userInfo.UserId, secret)
if err2 != nil {
c.Data["json"] = datas.BaseDataJSON{
Code: -1,
Msg: "更新totp失败",
}
_ = c.ServeJSON()
return
}
c.Data["json"] = datas.KeyDataJSON{
Code: 0,
Msg: "success",
}
_ = c.ServeJSON()
}