Files

45 lines
1.1 KiB
Go
Raw Permalink Normal View History

package models
import (
"time"
)
type UserRole string
const (
RoleUser UserRole = "user"
RoleGlobalAdmin UserRole = "global_admin"
)
type User struct {
ID int64 `json:"id"`
Login string `json:"login"`
PasswordHash string `json:"-"` // never send to client
Role UserRole `json:"role"`
LastSeen *time.Time `json:"last_seen,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
// SafeUser возвращает пользователя без чувствительных данных
type SafeUser struct {
ID int64 `json:"id"`
Login string `json:"login"`
Role UserRole `json:"role"`
LastSeen *time.Time `json:"last_seen,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
func (u *User) ToSafe() *SafeUser {
return &SafeUser{
ID: u.ID,
Login: u.Login,
Role: u.Role,
LastSeen: u.LastSeen,
CreatedAt: u.CreatedAt,
}
}
// IsGlobalAdmin проверяет, является ли пользователь глобальным админом
func (u *User) IsGlobalAdmin() bool {
return u.Role == RoleGlobalAdmin
}