37 lines
790 B
Go
37 lines
790 B
Go
|
package app
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"git.ctrlz.es/mgdelacroix/craban/model"
|
||
|
"git.ctrlz.es/mgdelacroix/craban/utils"
|
||
|
)
|
||
|
|
||
|
func (a *App) CreateUser(username, password, name, mail string) (*model.User, error) {
|
||
|
hashedPassword, err := utils.Encrypt(password)
|
||
|
if err != nil {
|
||
|
return nil, fmt.Errorf("cannot create user: %w", err)
|
||
|
}
|
||
|
|
||
|
newUser := &model.User{
|
||
|
Username: username,
|
||
|
Password: hashedPassword,
|
||
|
Name: name,
|
||
|
Mail: mail,
|
||
|
}
|
||
|
|
||
|
if err := newUser.IsValid(); err != nil {
|
||
|
return nil, fmt.Errorf("invalid user for creation: %w", err)
|
||
|
}
|
||
|
|
||
|
return a.store.User().Create(newUser)
|
||
|
}
|
||
|
|
||
|
func (a *App) ListUsers() ([]*model.User, error) {
|
||
|
return a.store.User().List()
|
||
|
}
|
||
|
|
||
|
func (a *App) DeleteUserByUsername(username string) error {
|
||
|
return a.store.User().DeleteByUsername(username)
|
||
|
}
|