package user import ( "encoding/json" "forge.cadoles.com/Cadoles/emissary/internal/auth" "forge.cadoles.com/Cadoles/emissary/internal/datastore" ) type Role string const ( RoleWriter Role = "writer" RoleReader Role = "reader" RoleAdmin Role = "admin" ) func isValidRole(r string) bool { rr := Role(r) return rr == RoleWriter || rr == RoleReader || rr == RoleAdmin } type User struct { subject string tenantID datastore.TenantID role Role } // Subject implements auth.User func (u *User) Subject() string { return u.subject } // Tenant implements auth.User func (u *User) Tenant() datastore.TenantID { return u.tenantID } func (u *User) Role() Role { return u.role } func (u *User) MarshalJSON() ([]byte, error) { type user struct { Subject string `json:"subject"` Tenant string `json:"tenant"` Role string `json:"role"` } jsonUser := user{ Subject: u.Subject(), Tenant: string(u.Tenant()), Role: string(u.Role()), } return json.Marshal(jsonUser) } var _ auth.User = &User{}