mirror of
https://github.com/h44z/wg-portal.git
synced 2025-06-27 16:57:01 +00:00
76 lines
2.1 KiB
Go
76 lines
2.1 KiB
Go
package model
|
|
|
|
import (
|
|
"slices"
|
|
"strings"
|
|
|
|
"github.com/h44z/wg-portal/internal/domain"
|
|
)
|
|
|
|
type LoginProviderInfo struct {
|
|
Identifier string `json:"Identifier" example:"google"`
|
|
Name string `json:"Name" example:"Login with Google"`
|
|
ProviderUrl string `json:"ProviderUrl" example:"/auth/google/login"`
|
|
CallbackUrl string `json:"CallbackUrl" example:"/auth/google/callback"`
|
|
}
|
|
|
|
func NewLoginProviderInfo(src *domain.LoginProviderInfo) *LoginProviderInfo {
|
|
return &LoginProviderInfo{
|
|
Identifier: src.Identifier,
|
|
Name: src.Name,
|
|
ProviderUrl: src.ProviderUrl,
|
|
CallbackUrl: src.CallbackUrl,
|
|
}
|
|
}
|
|
|
|
func NewLoginProviderInfos(src []domain.LoginProviderInfo) []LoginProviderInfo {
|
|
accessories := make([]LoginProviderInfo, len(src))
|
|
for i := range src {
|
|
accessories[i] = *NewLoginProviderInfo(&src[i])
|
|
}
|
|
return accessories
|
|
}
|
|
|
|
type SessionInfo struct {
|
|
LoggedIn bool `json:"LoggedIn"`
|
|
IsAdmin bool `json:"IsAdmin,omitempty"`
|
|
UserIdentifier *string `json:"UserIdentifier,omitempty"`
|
|
UserFirstname *string `json:"UserFirstname,omitempty"`
|
|
UserLastname *string `json:"UserLastname,omitempty"`
|
|
UserEmail *string `json:"UserEmail,omitempty"`
|
|
}
|
|
|
|
type OauthInitiationResponse struct {
|
|
RedirectUrl string
|
|
State string
|
|
}
|
|
|
|
type WebAuthnCredentialRequest struct {
|
|
Name string `json:"Name"`
|
|
}
|
|
type WebAuthnCredentialResponse struct {
|
|
ID string `json:"ID"`
|
|
Name string `json:"Name"`
|
|
CreatedAt string `json:"CreatedAt"`
|
|
}
|
|
|
|
func NewWebAuthnCredentialResponse(src domain.UserWebauthnCredential) WebAuthnCredentialResponse {
|
|
return WebAuthnCredentialResponse{
|
|
ID: src.CredentialIdentifier,
|
|
Name: src.DisplayName,
|
|
CreatedAt: src.CreatedAt.Format("2006-01-02 15:04:05"),
|
|
}
|
|
}
|
|
|
|
func NewWebAuthnCredentialResponses(src []domain.UserWebauthnCredential) []WebAuthnCredentialResponse {
|
|
credentials := make([]WebAuthnCredentialResponse, len(src))
|
|
for i := range src {
|
|
credentials[i] = NewWebAuthnCredentialResponse(src[i])
|
|
}
|
|
// Sort by CreatedAt, newest first
|
|
slices.SortFunc(credentials, func(i, j WebAuthnCredentialResponse) int {
|
|
return strings.Compare(i.CreatedAt, j.CreatedAt)
|
|
})
|
|
return credentials
|
|
}
|