Compare commits
No commits in common. "c51af61820597cbbfe70149fd415298fa41c6bc6" and "ed13d621109d0bd2a3c080292f18219fd379e9c5" have entirely different histories.
c51af61820
...
ed13d62110
@ -3,7 +3,6 @@ package api
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.solsynth.dev/hydrogen/passport/pkg/internal/server/exts"
|
"git.solsynth.dev/hydrogen/passport/pkg/internal/server/exts"
|
||||||
@ -119,7 +118,7 @@ func editUserinfo(c *fiber.Ctx) error {
|
|||||||
user := c.Locals("user").(models.Account)
|
user := c.Locals("user").(models.Account)
|
||||||
|
|
||||||
var data struct {
|
var data struct {
|
||||||
Nick string `json:"nick" validate:"required"`
|
Nick string `json:"nick" validate:"required,min=2,max=24"`
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
FirstName string `json:"first_name"`
|
FirstName string `json:"first_name"`
|
||||||
LastName string `json:"last_name"`
|
LastName string `json:"last_name"`
|
||||||
@ -128,11 +127,6 @@ func editUserinfo(c *fiber.Ctx) error {
|
|||||||
|
|
||||||
if err := exts.BindAndValidate(c, &data); err != nil {
|
if err := exts.BindAndValidate(c, &data); err != nil {
|
||||||
return err
|
return err
|
||||||
} else {
|
|
||||||
data.Nick = strings.TrimSpace(data.Nick)
|
|
||||||
}
|
|
||||||
if !services.ValidateAccountName(data.Nick, 4, 24) {
|
|
||||||
return fiber.NewError(fiber.StatusBadRequest, "invalid account nick, length requires 4 to 24")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var account models.Account
|
var account models.Account
|
||||||
@ -162,8 +156,8 @@ func editUserinfo(c *fiber.Ctx) error {
|
|||||||
|
|
||||||
func doRegister(c *fiber.Ctx) error {
|
func doRegister(c *fiber.Ctx) error {
|
||||||
var data struct {
|
var data struct {
|
||||||
Name string `json:"name" validate:"required,lowercase,alphanum,min=4,max=16"`
|
Name string `json:"name" validate:"required,lowercase,alphanum,min=2,max=16"`
|
||||||
Nick string `json:"nick" validate:"required"`
|
Nick string `json:"nick" validate:"required,min=2,max=24"`
|
||||||
Email string `json:"email" validate:"required,email"`
|
Email string `json:"email" validate:"required,email"`
|
||||||
Password string `json:"password" validate:"required,min=4,max=32"`
|
Password string `json:"password" validate:"required,min=4,max=32"`
|
||||||
MagicToken string `json:"magic_token"`
|
MagicToken string `json:"magic_token"`
|
||||||
@ -171,15 +165,7 @@ func doRegister(c *fiber.Ctx) error {
|
|||||||
|
|
||||||
if err := exts.BindAndValidate(c, &data); err != nil {
|
if err := exts.BindAndValidate(c, &data); err != nil {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else if viper.GetBool("use_registration_magic_token") && len(data.MagicToken) <= 0 {
|
||||||
data.Name = strings.TrimSpace(data.Name)
|
|
||||||
data.Nick = strings.TrimSpace(data.Nick)
|
|
||||||
data.Email = strings.TrimSpace(data.Email)
|
|
||||||
}
|
|
||||||
if !services.ValidateAccountName(data.Nick, 4, 24) {
|
|
||||||
return fiber.NewError(fiber.StatusBadRequest, "invalid account nick, length requires 4 to 24")
|
|
||||||
}
|
|
||||||
if viper.GetBool("use_registration_magic_token") && len(data.MagicToken) <= 0 {
|
|
||||||
return fmt.Errorf("missing magic token in request")
|
return fmt.Errorf("missing magic token in request")
|
||||||
} else if viper.GetBool("use_registration_magic_token") {
|
} else if viper.GetBool("use_registration_magic_token") {
|
||||||
if tk, err := services.ValidateMagicToken(data.MagicToken, models.RegistrationMagicToken); err != nil {
|
if tk, err := services.ValidateMagicToken(data.MagicToken, models.RegistrationMagicToken); err != nil {
|
||||||
|
@ -39,25 +39,14 @@ func getOtherUserinfo(c *fiber.Ctx) error {
|
|||||||
|
|
||||||
func getOtherUserinfoBatch(c *fiber.Ctx) error {
|
func getOtherUserinfoBatch(c *fiber.Ctx) error {
|
||||||
idSet := strings.Split(c.Query("id"), ",")
|
idSet := strings.Split(c.Query("id"), ",")
|
||||||
nameSet := strings.Split(c.Query("name"), ",")
|
if len(idSet) == 0 {
|
||||||
if len(idSet) == 0 && len(nameSet) == 0 {
|
return fiber.NewError(fiber.StatusBadRequest, "id list is required")
|
||||||
return fiber.NewError(fiber.StatusBadRequest, "query filter is required")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(idSet)+len(nameSet) > 100 {
|
|
||||||
return fiber.NewError(fiber.StatusBadRequest, "only support 100 users in a single batch")
|
|
||||||
}
|
|
||||||
|
|
||||||
tx := database.C.Model(&models.Account{}).Limit(100)
|
|
||||||
if len(idSet) > 0 {
|
|
||||||
tx = tx.Where("id IN ?", idSet)
|
|
||||||
}
|
|
||||||
if len(nameSet) > 0 {
|
|
||||||
tx = tx.Where("name IN ?", nameSet)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var accounts []models.Account
|
var accounts []models.Account
|
||||||
if err := tx.Find(&accounts).Error; err != nil {
|
if err := database.C.
|
||||||
|
Where("id IN ?", idSet).
|
||||||
|
Find(&accounts).Error; err != nil {
|
||||||
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
return fiber.NewError(fiber.StatusBadRequest, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package services
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
"unicode"
|
|
||||||
|
|
||||||
"gorm.io/gorm/clause"
|
"gorm.io/gorm/clause"
|
||||||
|
|
||||||
@ -17,18 +16,6 @@ import (
|
|||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ValidateAccountName(val string, min, max int) bool {
|
|
||||||
actualLength := 0
|
|
||||||
for _, r := range val {
|
|
||||||
if unicode.Is(unicode.Han, r) || unicode.Is(unicode.Hiragana, r) || unicode.Is(unicode.Katakana, r) || unicode.Is(unicode.Hangul, r) {
|
|
||||||
actualLength += 2
|
|
||||||
} else {
|
|
||||||
actualLength += 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return min > actualLength && actualLength < max
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAccount(id uint) (models.Account, error) {
|
func GetAccount(id uint) (models.Account, error) {
|
||||||
var account models.Account
|
var account models.Account
|
||||||
if err := database.C.Where(models.Account{
|
if err := database.C.Where(models.Account{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user