added user independent sections and started db migration work
This commit is contained in:
parent
6a2dc8146c
commit
16ea95bf09
24 changed files with 622 additions and 122 deletions
|
|
@ -5,14 +5,12 @@ package db
|
|||
import (
|
||||
"errors"
|
||||
"git.giftfish.de/ston1th/gowiki/pkg/core"
|
||||
"git.giftfish.de/ston1th/gowiki/pkg/log"
|
||||
"git.giftfish.de/ston1th/gowiki/pkg/otp"
|
||||
"git.giftfish.de/ston1th/jwt/v3"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const userPrefix = "user/"
|
||||
|
|
@ -20,7 +18,7 @@ const userPrefix = "user/"
|
|||
var (
|
||||
errUserNotFound = errors.New("db: user not found")
|
||||
errUserExists = errors.New("db: user already exist")
|
||||
errUserReserved = errors.New("db: username is reserved")
|
||||
errNameReserved = errors.New("db: name is reserved")
|
||||
|
||||
userRe = regexp.MustCompile("[^a-zA-Z0-9]+")
|
||||
)
|
||||
|
|
@ -64,8 +62,8 @@ func (db *DB) UserExists(username string) error {
|
|||
|
||||
func (db *DB) CreateUser(username, password string, admin bool) error {
|
||||
username = userRe.ReplaceAllString(username, "")
|
||||
if reservedUser(username) {
|
||||
return errUserReserved
|
||||
if _, ok := core.Contains(username, reservedNames); ok {
|
||||
return errNameReserved
|
||||
}
|
||||
if err := db.UserExists(username); err == nil {
|
||||
return errUserExists
|
||||
|
|
@ -74,6 +72,10 @@ func (db *DB) CreateUser(username, password string, admin bool) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = db.CreateSection(username, nil, true)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return db.store.Set(userPrefix+username, &core.User{
|
||||
Username: username,
|
||||
Password: string(hash),
|
||||
|
|
@ -218,21 +220,5 @@ func (db *DB) DeleteUser(username string) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
username += "/"
|
||||
var pages []string
|
||||
db.store.ForEach(func(k string, _ []byte) error {
|
||||
if trim, ok := hasTrimPrefix(k, pagePrefix); ok {
|
||||
if strings.HasPrefix(trim, username) {
|
||||
pages = append(pages, trim)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
for _, p := range pages {
|
||||
err := db.deletePage(p)
|
||||
if err != nil {
|
||||
log.Debugf("DeleteUser %s, %s", username, err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
return db.DeleteSection(username, true)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue