mirror of
				https://github.com/steveiliop56/tinyauth.git
				synced 2025-11-04 08:05:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package handlers
 | 
						|
 | 
						|
import (
 | 
						|
	"tinyauth/internal/types"
 | 
						|
 | 
						|
	"github.com/gin-gonic/gin"
 | 
						|
	"github.com/rs/zerolog/log"
 | 
						|
)
 | 
						|
 | 
						|
func (h *Handlers) AppContextHandler(c *gin.Context) {
 | 
						|
	log.Debug().Msg("Getting app context")
 | 
						|
 | 
						|
	// Get configured providers
 | 
						|
	configuredProviders := h.Providers.GetConfiguredProviders()
 | 
						|
 | 
						|
	// We have username/password configured so add it to our providers
 | 
						|
	if h.Auth.UserAuthConfigured() {
 | 
						|
		configuredProviders = append(configuredProviders, "username")
 | 
						|
	}
 | 
						|
 | 
						|
	// Return app context
 | 
						|
	appContext := types.AppContext{
 | 
						|
		Status:                200,
 | 
						|
		Message:               "OK",
 | 
						|
		ConfiguredProviders:   configuredProviders,
 | 
						|
		DisableContinue:       h.Config.DisableContinue,
 | 
						|
		Title:                 h.Config.Title,
 | 
						|
		GenericName:           h.Config.GenericName,
 | 
						|
		Domain:                h.Config.Domain,
 | 
						|
		ForgotPasswordMessage: h.Config.ForgotPasswordMessage,
 | 
						|
		BackgroundImage:       h.Config.BackgroundImage,
 | 
						|
		OAuthAutoRedirect:     h.Config.OAuthAutoRedirect,
 | 
						|
	}
 | 
						|
	c.JSON(200, appContext)
 | 
						|
}
 | 
						|
 | 
						|
func (h *Handlers) UserContextHandler(c *gin.Context) {
 | 
						|
	log.Debug().Msg("Getting user context")
 | 
						|
 | 
						|
	// Create user context using hooks
 | 
						|
	userContext := h.Hooks.UseUserContext(c)
 | 
						|
 | 
						|
	userContextResponse := types.UserContextResponse{
 | 
						|
		Status:      200,
 | 
						|
		IsLoggedIn:  userContext.IsLoggedIn,
 | 
						|
		Username:    userContext.Username,
 | 
						|
		Name:        userContext.Name,
 | 
						|
		Email:       userContext.Email,
 | 
						|
		Provider:    userContext.Provider,
 | 
						|
		Oauth:       userContext.OAuth,
 | 
						|
		TotpPending: userContext.TotpPending,
 | 
						|
	}
 | 
						|
 | 
						|
	// If we are not logged in we set the status to 401 else we set it to 200
 | 
						|
	if !userContext.IsLoggedIn {
 | 
						|
		log.Debug().Msg("Unauthorized")
 | 
						|
		userContextResponse.Message = "Unauthorized"
 | 
						|
	} else {
 | 
						|
		log.Debug().Interface("userContext", userContext).Msg("Authenticated")
 | 
						|
		userContextResponse.Message = "Authenticated"
 | 
						|
	}
 | 
						|
 | 
						|
	c.JSON(200, userContextResponse)
 | 
						|
}
 |