package controllers import ( "easywish/internal/services" "net/http" "github.com/gin-gonic/gin" ) type AuthController interface { RegistrationBegin(c *gin.Context) RegistrationComplete(c *gin.Context) Login(c *gin.Context) Refresh(c *gin.Context) PasswordResetBegin(c *gin.Context) PasswordResetComplete(c *gin.Context) Router } type authControllerImpl struct { authService services.AuthService } func NewAuthController(as services.AuthService) AuthController { return &authControllerImpl{authService: as} } // Login implements AuthController. // @Summary Acquire tokens via login credentials (and 2FA code if needed) // @Tags Auth // @Accept json // @Produce json // @Param request body models.LoginRequest true "desc" // @Success 200 {object} models.LoginResponse "desc" // @Router /auth/login [post] func (a *authControllerImpl) Login(c *gin.Context) { c.Status(http.StatusNotImplemented) } // PasswordResetBegin implements AuthController. // @Summary Request password reset email // @Tags Auth // @Accept json // @Produce json // @Router /auth/passwordResetBegin [post] func (a *authControllerImpl) PasswordResetBegin(c *gin.Context) { c.Status(http.StatusNotImplemented) } // PasswordResetComplete implements AuthController. // @Summary Complete password reset with email code and provide 2FA code or backup code if needed // @Tags Auth // @Accept json // @Produce json // @Router /auth/passwordResetComplete [post] func (a *authControllerImpl) PasswordResetComplete(c *gin.Context) { c.Status(http.StatusNotImplemented) } // Refresh implements AuthController. // @Summary Receive new tokens via refresh token // @Tags Auth // @Accept json // @Produce json // @Router /auth/refresh [post] func (a *authControllerImpl) Refresh(c *gin.Context) { c.Status(http.StatusNotImplemented) } // RegistrationComplete implements AuthController. // @Summary Register an account // @Tags Auth // @Accept json // @Produce json // @Router /auth/registrationBegin [post] func (a *authControllerImpl) RegistrationBegin(c *gin.Context) { c.Status(http.StatusNotImplemented) } // RegistrationBegin implements AuthController. // @Summary Confirm with code, finish creating the account // @Tags Auth // @Accept json // @Produce json // @Router /auth/registrationComplete [post] func (a *authControllerImpl) RegistrationComplete(c *gin.Context) { c.Status(http.StatusNotImplemented) } func (a *authControllerImpl) RegisterRoutes(group *gin.RouterGroup) { group.POST("/registrationBegin", a.RegistrationBegin) group.POST("/registrationComplete", a.RegistrationComplete) group.POST("/login", a.Login) group.POST("/refresh", a.Refresh) group.POST("/passwordResetBegin", a.PasswordResetBegin) group.POST("/passwordResetComplete", a.PasswordResetComplete) }