add register
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
lang: "zh-CN"
|
lang: "zh-CN"
|
||||||
app:
|
app:
|
||||||
web-client: 1 # 1:启用 0:禁用
|
web-client: 1 # 1:启用 0:禁用
|
||||||
|
register: false #是否开启注册
|
||||||
gin:
|
gin:
|
||||||
api-addr: "0.0.0.0:21114"
|
api-addr: "0.0.0.0:21114"
|
||||||
mode: "release" #release,debug,test
|
mode: "release" #release,debug,test
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ const (
|
|||||||
|
|
||||||
type App struct {
|
type App struct {
|
||||||
WebClient int `mapstructure:"web-client"`
|
WebClient int `mapstructure:"web-client"`
|
||||||
|
Register bool `mapstructure:"register"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
|
|||||||
@@ -103,7 +103,10 @@ func (ct *Login) LoginOptions(c *gin.Context) {
|
|||||||
for _, v := range res.Oauths {
|
for _, v := range res.Oauths {
|
||||||
ops = append(ops, v.Op)
|
ops = append(ops, v.Op)
|
||||||
}
|
}
|
||||||
response.Success(c, ops)
|
response.Success(c, gin.H{
|
||||||
|
"ops": ops,
|
||||||
|
"register": global.Config.App.Register,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// OidcAuth
|
// OidcAuth
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"Gwen/http/request/admin"
|
"Gwen/http/request/admin"
|
||||||
"Gwen/http/response"
|
"Gwen/http/response"
|
||||||
adResp "Gwen/http/response/admin"
|
adResp "Gwen/http/response/admin"
|
||||||
|
"Gwen/model"
|
||||||
"Gwen/service"
|
"Gwen/service"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
@@ -323,3 +324,40 @@ func (ct *User) GroupUsers(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
response.Success(c, data)
|
response.Success(c, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Register
|
||||||
|
func (ct *User) Register(c *gin.Context) {
|
||||||
|
if !global.Config.App.Register {
|
||||||
|
response.Fail(c, 101, response.TranslateMsg(c, "RegisterClosed"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
f := &admin.RegisterForm{}
|
||||||
|
if err := c.ShouldBindJSON(f); err != nil {
|
||||||
|
response.Fail(c, 101, response.TranslateMsg(c, "ParamsError")+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
errList := global.Validator.ValidStruct(c, f)
|
||||||
|
if len(errList) > 0 {
|
||||||
|
response.Fail(c, 101, errList[0])
|
||||||
|
return
|
||||||
|
}
|
||||||
|
u := service.AllService.UserService.Register(f.Username, f.Password)
|
||||||
|
if u == nil || u.Id == 0 {
|
||||||
|
response.Fail(c, 101, response.TranslateMsg(c, "OperationFailed"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 注册成功后自动登录
|
||||||
|
ut := service.AllService.UserService.Login(u, &model.LoginLog{
|
||||||
|
UserId: u.Id,
|
||||||
|
Client: model.LoginLogClientWebAdmin,
|
||||||
|
Uuid: "",
|
||||||
|
Ip: c.ClientIP(),
|
||||||
|
Type: model.LoginLogTypeAccount,
|
||||||
|
})
|
||||||
|
response.Success(c, &adResp.LoginPayload{
|
||||||
|
Token: ut.Token,
|
||||||
|
Username: u.Username,
|
||||||
|
RouteNames: service.AllService.UserService.RouteNames(u),
|
||||||
|
Nickname: u.Nickname,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -59,3 +59,9 @@ type GroupUsersQuery struct {
|
|||||||
IsMy int `json:"is_my"`
|
IsMy int `json:"is_my"`
|
||||||
UserId uint `json:"user_id"`
|
UserId uint `json:"user_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RegisterForm struct {
|
||||||
|
Username string `json:"username" validate:"required,gte=4,lte=10"`
|
||||||
|
Password string `json:"password" validate:"required,gte=4,lte=20"`
|
||||||
|
ConfirmPassword string `json:"confirm_password" validate:"required,gte=4,lte=20"`
|
||||||
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ func Init(g *gin.Engine) {
|
|||||||
|
|
||||||
adg := g.Group("/api/admin")
|
adg := g.Group("/api/admin")
|
||||||
LoginBind(adg)
|
LoginBind(adg)
|
||||||
|
adg.POST("/user/register", (&admin.User{}).Register)
|
||||||
adg.Use(middleware.AdminAuth())
|
adg.Use(middleware.AdminAuth())
|
||||||
//FileBind(adg)
|
//FileBind(adg)
|
||||||
UserBind(adg)
|
UserBind(adg)
|
||||||
|
|||||||
@@ -12,6 +12,12 @@ type LoginLog struct {
|
|||||||
TimeModel
|
TimeModel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
LoginLogClientWebAdmin = "webadmin"
|
||||||
|
LoginLogClientWeb = "webclient"
|
||||||
|
LoginLogClientApp = "app"
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
LoginLogTypeAccount = "account"
|
LoginLogTypeAccount = "account"
|
||||||
LoginLogTypeOauth = "oauth"
|
LoginLogTypeOauth = "oauth"
|
||||||
|
|||||||
@@ -119,3 +119,7 @@ other = "Default Group"
|
|||||||
description = "Share group"
|
description = "Share group"
|
||||||
one = "Share Group"
|
one = "Share Group"
|
||||||
other = "Share Group"
|
other = "Share Group"
|
||||||
|
[RegisterClosed]
|
||||||
|
description = "Register closed."
|
||||||
|
one = "Register closed."
|
||||||
|
other = "Register closed."
|
||||||
|
|||||||
@@ -121,3 +121,8 @@ other = "기본 그룹"
|
|||||||
description = "Share group."
|
description = "Share group."
|
||||||
one = "공유 그룹"
|
one = "공유 그룹"
|
||||||
other = "공유 그룹"
|
other = "공유 그룹"
|
||||||
|
|
||||||
|
[RegisterClosed]
|
||||||
|
description = "Register closed."
|
||||||
|
one = "가입이 종료되었습니다."
|
||||||
|
other = "가입이 종료되었습니다."
|
||||||
@@ -127,3 +127,8 @@ other = "Группа по умолчанию"
|
|||||||
description = "Share group."
|
description = "Share group."
|
||||||
one = "Общая группа"
|
one = "Общая группа"
|
||||||
other = "Общая группа"
|
other = "Общая группа"
|
||||||
|
|
||||||
|
[RegisterClosed]
|
||||||
|
description = "Register closed."
|
||||||
|
one = "Регистрация закрыта."
|
||||||
|
other = "Регистрация закрыта."
|
||||||
@@ -121,3 +121,7 @@ other = "默认组"
|
|||||||
description = "Share group."
|
description = "Share group."
|
||||||
one = "共享组"
|
one = "共享组"
|
||||||
other = "共享组"
|
other = "共享组"
|
||||||
|
[RegisterClosed]
|
||||||
|
description = "Register closed."
|
||||||
|
one = "注册已关闭。"
|
||||||
|
other = "注册已关闭。"
|
||||||
@@ -323,3 +323,13 @@ func (us *UserService) FindLatestUserIdFromLoginLogByUuid(uuid string) uint {
|
|||||||
global.DB.Where("uuid = ?", uuid).Order("id desc").First(llog)
|
global.DB.Where("uuid = ?", uuid).Order("id desc").First(llog)
|
||||||
return llog.UserId
|
return llog.UserId
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (us *UserService) Register(username string, password string) *model.User {
|
||||||
|
u := &model.User{
|
||||||
|
Username: username,
|
||||||
|
Password: us.EncryptPassword(password),
|
||||||
|
GroupId: 1,
|
||||||
|
}
|
||||||
|
global.DB.Create(u)
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user