mirror of
https://github.com/VaalaCat/frp-panel.git
synced 2025-09-26 19:31:18 +08:00
70 lines
1.9 KiB
Go
70 lines
1.9 KiB
Go
package auth
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/VaalaCat/frp-panel/defs"
|
|
"github.com/VaalaCat/frp-panel/models"
|
|
"github.com/VaalaCat/frp-panel/pb"
|
|
"github.com/VaalaCat/frp-panel/services/app"
|
|
"github.com/VaalaCat/frp-panel/services/dao"
|
|
"github.com/VaalaCat/frp-panel/utils"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func RegisterHandler(c *app.Context, req *pb.RegisterRequest) (*pb.RegisterResponse, error) {
|
|
username := req.GetUsername()
|
|
password := req.GetPassword()
|
|
email := req.GetEmail()
|
|
|
|
if username == "" || password == "" || email == "" {
|
|
return &pb.RegisterResponse{
|
|
Status: &pb.Status{Code: pb.RespCode_RESP_CODE_INVALID, Message: "invalid username or password or email"},
|
|
}, fmt.Errorf("invalid username or password or email")
|
|
}
|
|
|
|
userCount, err := dao.NewQuery(c).AdminCountUsers()
|
|
if err != nil {
|
|
return &pb.RegisterResponse{
|
|
Status: &pb.Status{Code: pb.RespCode_RESP_CODE_INVALID, Message: err.Error()},
|
|
}, err
|
|
}
|
|
|
|
if !c.GetApp().GetConfig().App.EnableRegister && userCount > 0 {
|
|
return &pb.RegisterResponse{
|
|
Status: &pb.Status{Code: pb.RespCode_RESP_CODE_INVALID, Message: "register is disabled"},
|
|
}, fmt.Errorf("register is disabled")
|
|
}
|
|
|
|
hashedPassword, err := utils.HashPassword(password)
|
|
if err != nil {
|
|
return &pb.RegisterResponse{
|
|
Status: &pb.Status{Code: pb.RespCode_RESP_CODE_INVALID, Message: err.Error()},
|
|
}, err
|
|
}
|
|
|
|
newUser := &models.UserEntity{
|
|
UserName: username,
|
|
Password: hashedPassword,
|
|
Email: email,
|
|
Status: models.STATUS_NORMAL,
|
|
Role: defs.UserRole_Normal,
|
|
Token: uuid.New().String(),
|
|
}
|
|
|
|
if userCount == 0 {
|
|
newUser.Role = defs.UserRole_Admin
|
|
}
|
|
|
|
err = dao.NewQuery(c).CreateUser(newUser)
|
|
if err != nil {
|
|
return &pb.RegisterResponse{
|
|
Status: &pb.Status{Code: pb.RespCode_RESP_CODE_INVALID, Message: err.Error()},
|
|
}, err
|
|
}
|
|
|
|
return &pb.RegisterResponse{
|
|
Status: &pb.Status{Code: pb.RespCode_RESP_CODE_SUCCESS, Message: "ok"},
|
|
}, nil
|
|
}
|