Add invite user feature for admin

This commit is contained in:
2026-05-06 18:00:33 +02:00
parent e29743d5fa
commit 902279b34a
20 changed files with 398 additions and 83 deletions

View File

@@ -1,6 +1,8 @@
package createuser
import (
"crypto/rand"
"encoding/base64"
"errors"
"fmt"
"net/http"
@@ -14,6 +16,31 @@ import (
"gorm.io/gorm"
)
func CreateUserToActivate(ac appcontext.AppContext, username string) (model.User, error) {
token := generateRandomToken()
user := model.User{
Name: username,
Admin: false,
InviteToken: token,
Activated: false,
}
err := CreateUserWithHashedPassword(ac, &user)
return user, err
}
func generateRandomToken() string {
tokenByte := make([]byte, 64)
var tokenBuilder strings.Builder
rand.Read(tokenByte)
encoder := base64.NewEncoder(base64.StdEncoding, &tokenBuilder)
encoder.Write(tokenByte)
// Must close the encoder when finished to flush any partial blocks.
// If you comment out the following line, the last partial block "r"
// won't be encoded.
encoder.Close()
return tokenBuilder.String()
}
// this method will hash the password
func CreateUser(ac appcontext.AppContext, username string, password string) error {
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
@@ -22,9 +49,10 @@ func CreateUser(ac appcontext.AppContext, username string, password string) erro
}
user := model.User{
Name: username,
Password: string(hashedPassword),
Admin: false,
Name: username,
Password: string(hashedPassword),
Admin: false,
Activated: true,
}
return CreateUserWithHashedPassword(ac, &user)
}
@@ -103,9 +131,10 @@ func createDefaultUsersFromMap(
}
user := model.User{
Name: username,
Password: password,
Admin: isAdmin,
Name: username,
Password: password,
Admin: isAdmin,
Activated: true,
}
err = CreateUserWithHashedPassword(ac, &user)
if err != nil {