mirror of https://github.com/h44z/wg-portal.git
				
				
				
			
		
			
				
	
	
		
			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
 | 
						|
}
 |