This repository has been archived on 2025-10-08. You can view files and clone it, but cannot push or open issues or pull requests.
miniauthold/pkg/miniauth/miniauth.go
kekskurse 3a0f0ced51
All checks were successful
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/playwright Pipeline was successful
ci/woodpecker/push/deplyoment Pipeline was successful
chore: check if username exists
2025-03-13 20:38:30 +01:00

48 lines
987 B
Go

package miniauth
import (
"regexp"
"git.keks.cloud/kekskurse/miniauth/pkg/userstore"
"git.keks.cloud/kekskurse/miniauth/pkg/utils"
"github.com/rs/zerolog"
)
type Miniauth struct {
store userstore.Store
log zerolog.Logger
}
func NewMiniauth(us userstore.Store) Miniauth {
m := Miniauth{}
m.store = us
return m
}
func (m Miniauth) RegisterUser(username string, mail string, password string) error {
log := m.log.With().Str("func", "RegisterUser").Str("username", username).Str("mail", mail).Logger()
err := m.checkUsernameForRegistration(username)
if err != nil {
return utils.WrapError(ErrUserHasInvalideChars, err, log)
}
return nil
}
func (m Miniauth) checkUsernameForRegistration(username string) error {
reg := regexp.MustCompile("^[a-z0-9]{4,25}$")
if !reg.MatchString(username) {
return ErrUserHasInvalideChars
}
exists, err := m.store.UserExists(username)
if err != nil {
return err
}
if exists {
return ErrUsernameIsTaken
}
return nil
}