added user independent sections and started db migration work

This commit is contained in:
ston1th 2019-03-26 23:55:55 +01:00
commit 16ea95bf09
24 changed files with 622 additions and 122 deletions

View file

@ -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)
}