feat: initialized auth controller

This commit is contained in:
2025-06-18 16:16:22 +03:00
parent ec40c86e4a
commit 582c0f15d8
5 changed files with 314 additions and 0 deletions

View File

@@ -15,6 +15,96 @@ const docTemplate = `{
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/auth/login": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Acquire tokens via login credentials or by providing 2FA code",
"responses": {}
}
},
"/auth/passwordResetBegin": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Request password reset email",
"responses": {}
}
},
"/auth/passwordResetComplete": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Complete password reset with email code and provide 2FA code or backup code if needed",
"responses": {}
}
},
"/auth/refresh": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Receive new tokens via refresh token",
"responses": {}
}
},
"/auth/registrationBegin": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Register an account",
"responses": {}
}
},
"/auth/registrationComplete": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Confirm with code, finish creating the account",
"responses": {}
}
},
"/service/health": {
"get": {
"description": "Used internally for checking service health",

View File

@@ -4,6 +4,96 @@
"contact": {}
},
"paths": {
"/auth/login": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Acquire tokens via login credentials or by providing 2FA code",
"responses": {}
}
},
"/auth/passwordResetBegin": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Request password reset email",
"responses": {}
}
},
"/auth/passwordResetComplete": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Complete password reset with email code and provide 2FA code or backup code if needed",
"responses": {}
}
},
"/auth/refresh": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Receive new tokens via refresh token",
"responses": {}
}
},
"/auth/registrationBegin": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Register an account",
"responses": {}
}
},
"/auth/registrationComplete": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "Confirm with code, finish creating the account",
"responses": {}
}
},
"/service/health": {
"get": {
"description": "Used internally for checking service health",

View File

@@ -7,6 +7,67 @@ definitions:
info:
contact: {}
paths:
/auth/login:
post:
consumes:
- application/json
produces:
- application/json
responses: {}
summary: Acquire tokens via login credentials or by providing 2FA code
tags:
- Auth
/auth/passwordResetBegin:
post:
consumes:
- application/json
produces:
- application/json
responses: {}
summary: Request password reset email
tags:
- Auth
/auth/passwordResetComplete:
post:
consumes:
- application/json
produces:
- application/json
responses: {}
summary: Complete password reset with email code and provide 2FA code or backup
code if needed
tags:
- Auth
/auth/refresh:
post:
consumes:
- application/json
produces:
- application/json
responses: {}
summary: Receive new tokens via refresh token
tags:
- Auth
/auth/registrationBegin:
post:
consumes:
- application/json
produces:
- application/json
responses: {}
summary: Register an account
tags:
- Auth
/auth/registrationComplete:
post:
consumes:
- application/json
produces:
- application/json
responses: {}
summary: Confirm with code, finish creating the account
tags:
- Auth
/service/health:
get:
consumes:

View File

@@ -0,0 +1,63 @@
package controllers
import (
"net/http"
"github.com/gin-gonic/gin"
)
// @Summary Register an account
// @Tags Auth
// @Accept json
// @Produce json
// @Router /auth/registrationBegin [post]
func RegistrationBegin(c *gin.Context) {
c.Status(http.StatusNotImplemented)
}
// @Summary Confirm with code, finish creating the account
// @Tags Auth
// @Accept json
// @Produce json
// @Router /auth/registrationComplete [post]
func RegistrationComplete(c *gin.Context) {
c.Status(http.StatusNotImplemented)
}
// TODO: Document instructions on 2FA
// @Summary Acquire tokens via login credentials or by providing 2FA code
// @Tags Auth
// @Accept json
// @Produce json
// @Router /auth/login [post]
func Login(c *gin.Context) {
c.Status(http.StatusNotImplemented)
}
// @Summary Receive new tokens via refresh token
// @Tags Auth
// @Accept json
// @Produce json
// @Router /auth/refresh [post]
func Refresh(c *gin.Context) {
c.Status(http.StatusNotImplemented)
}
// @Summary Request password reset email
// @Tags Auth
// @Accept json
// @Produce json
// @Router /auth/passwordResetBegin [post]
func PasswordResetBegin(c *gin.Context) {
c.Status(http.StatusNotImplemented)
}
// TODO: Document instructions on 2FA
// @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 PasswordResetComplete(c *gin.Context) {
c.Status(http.StatusNotImplemented)
}

View File

@@ -13,6 +13,16 @@ func SetupRoutes(r *gin.Engine) *gin.Engine {
{
serviceGroup.GET("/health", controllers.HealthCheck)
}
authGroup := apiGroup.Group("/auth")
{
authGroup.POST("/registrationBegin", controllers.RegistrationBegin)
authGroup.POST("/registrationComplete", controllers.RegistrationComplete)
authGroup.POST("/login", controllers.Login)
authGroup.POST("/refresh", controllers.Refresh)
authGroup.POST("/passwordResetBegin", controllers.PasswordResetBegin)
authGroup.POST("/passwordResetComplete", controllers.PasswordResetComplete)
}
}
return r