imc-vibe/backend/internal/db/virtual_users.go
Christoph Haas 8b2d2649ac Add random password generation for new users
- Move GenerateRandomPassword to auth package for reuse
- Make password optional in user creation (generates 16-char if empty)
- Return generated password in response for user to copy
- Add Generate/Copy UI with show/hide toggle
2026-03-29 14:52:59 +02:00

54 lines
1.5 KiB
Go

package db
import (
"context"
"database/sql"
imcdb "git.workaround.org/chaas/imc/backend/internal/db/sqlc"
)
func (d *DB) GetAllMailUsers(ctx context.Context) ([]imcdb.VirtualUser, error) {
return d.Queries.GetAllMailUsers(ctx)
}
func (d *DB) GetUsersByDomain(ctx context.Context, domainID uint32) ([]imcdb.VirtualUser, error) {
return d.Queries.GetUsersByDomain(ctx, domainID)
}
func (d *DB) GetUserByID(ctx context.Context, id uint32) (imcdb.VirtualUser, error) {
return d.Queries.GetUserByID(ctx, id)
}
func (d *DB) GetUserByEmail(ctx context.Context, email string) (imcdb.VirtualUser, error) {
return d.Queries.GetUserByEmail(ctx, email)
}
func (d *DB) CreateUser(ctx context.Context, domainID uint32, email, passwordHash string, quota int64) error {
quotaNull := sql.NullInt64{Int64: quota, Valid: true}
return d.Queries.CreateUser(ctx, imcdb.CreateUserParams{
DomainID: domainID,
Email: email,
Password: passwordHash,
Quota: quotaNull,
})
}
func (d *DB) UpdateUserPassword(ctx context.Context, id uint32, passwordHash string) error {
return d.Queries.UpdateUserPassword(ctx, imcdb.UpdateUserPasswordParams{
Password: passwordHash,
ID: id,
})
}
func (d *DB) UpdateUserQuota(ctx context.Context, id uint32, quota int64) error {
quotaNull := sql.NullInt64{Int64: quota, Valid: true}
return d.Queries.UpdateUserQuota(ctx, imcdb.UpdateUserQuotaParams{
Quota: quotaNull,
ID: id,
})
}
func (d *DB) DeleteUser(ctx context.Context, id uint32) error {
return d.Queries.DeleteUser(ctx, id)
}