feat: implement user profile management with avatars, login, and personal data

- Add avatar upload functionality with public URL access.
- Implement user login with email and password authentication.
- Create endpoints for fetching and updating the authenticated user's profile.
- Set up database migrations for user profiles, including email and role management.
- Introduce personal data management linked to user profiles.
- Add email verification process with welcome email templates.
This commit is contained in:
fabio
2026-07-02 10:39:53 +02:00
parent 2608ce6e60
commit 167be9b0b3
94 changed files with 11696 additions and 1 deletions

38
profiles/status.go Normal file
View File

@@ -0,0 +1,38 @@
package profiles
type Status int
const (
StatusActive Status = iota
StatusInactive
StatusSuspended
StatusDeleted
StatusPending
StatusWaitingDeletion
StatusBanned
)
// StatusOption describes a valid profile status for display in admin UIs.
type StatusOption struct {
Name string `json:"name"`
Value Status `json:"value"`
Updatable bool `json:"updatable"`
}
// Statuses returns every valid profile status with a display name and its underlying value.
func Statuses() []StatusOption {
return []StatusOption{
{Name: "Active", Value: StatusActive, Updatable: true},
{Name: "Inactive", Value: StatusInactive, Updatable: true},
{Name: "Suspended", Value: StatusSuspended, Updatable: true},
{Name: "Deleted", Value: StatusDeleted, Updatable: false},
{Name: "Pending", Value: StatusPending, Updatable: true},
{Name: "Waiting deletion", Value: StatusWaitingDeletion, Updatable: false},
{Name: "Banned", Value: StatusBanned, Updatable: true},
}
}
// IsValid reports whether s is one of the defined Status values.
func (s Status) IsValid() bool {
return s >= StatusActive && s <= StatusBanned
}