Documentation
¶
Index ¶
- Variables
- func RegisterV1Courses(g *echo.Group, c *CourseController)
- func RegisterV1Curriculums(g *echo.Group, c *CurriculumController)
- func RegisterV1Exams(g *echo.Group, c *ExamController)
- func RegisterV1GradeTypes(g *echo.Group, c *GradeTypeController)
- func RegisterV1MetaCourse(g *echo.Group, m *MetaController)
- func RegisterV1Modules(g *echo.Group, c *ModuleController)
- func RegisterV1Output(g *echo.Group, o *OutputController)
- func RegisterV1User(g *echo.Group, u *UserController)
- type BaseController
- func (c *BaseController) CheckUserAnyRole(ctx echo.Context) *e.ApiError
- func (c *BaseController) CheckUserRole(roleId uint, ctx echo.Context) *e.ApiError
- func (c *BaseController) CheckUserRoles(roleIDs []uint, ctx echo.Context) *e.ApiError
- func (c *BaseController) GetPathParam(ctx echo.Context, param string) string
- func (c *BaseController) GetPathParamTime(ctx echo.Context, param string) (time.Time, error)
- func (c *BaseController) GetPathParamUint(ctx echo.Context, param string) (uint, error)
- func (c *BaseController) GetUser(ctx echo.Context) (*models.User, *e.ApiError)
- func (c *BaseController) Yeet(ctx echo.Context, data any) error
- type CourseController
- func (c *CourseController) Course(ctx echo.Context) error
- func (c *CourseController) Courses(ctx echo.Context) error
- func (c *CourseController) Create(ctx echo.Context) error
- func (c *CourseController) CreateVersion(ctx echo.Context) error
- func (c *CourseController) Delete(ctx echo.Context) error
- func (c *CourseController) Update(ctx echo.Context) error
- type CurriculumController
- func (c *CurriculumController) Create(ctx echo.Context) error
- func (c *CurriculumController) Curriculum(ctx echo.Context) error
- func (c *CurriculumController) Curriculums(ctx echo.Context) error
- func (c *CurriculumController) Delete(ctx echo.Context) error
- func (c *CurriculumController) Update(ctx echo.Context) error
- type ExamController
- type GradeTypeController
- func (c *GradeTypeController) Create(ctx echo.Context) error
- func (c *GradeTypeController) Delete(ctx echo.Context) error
- func (c *GradeTypeController) GradeType(ctx echo.Context) error
- func (c *GradeTypeController) GradeTypes(ctx echo.Context) error
- func (c *GradeTypeController) Update(ctx echo.Context) error
- type MetaController
- func (m *MetaController) MetaCourses(ctx echo.Context) error
- func (c *MetaController) MetaCurriculums(ctx echo.Context) error
- func (c *MetaController) MetaModules(ctx echo.Context) error
- func (c *MetaController) MyCoursesAsTeacher(ctx echo.Context) error
- func (c *MetaController) MyCurriculumsAsStudent(ctx echo.Context) error
- func (c *MetaController) SetStudentCurriculumLink(ctx echo.Context) error
- type ModuleController
- func (c *ModuleController) Create(ctx echo.Context) error
- func (c *ModuleController) CreateVersion(ctx echo.Context) error
- func (c *ModuleController) Delete(ctx echo.Context) error
- func (c *ModuleController) Module(ctx echo.Context) error
- func (c *ModuleController) Modules(ctx echo.Context) error
- func (c *ModuleController) Update(ctx echo.Context) error
- type OutputController
- func (c *OutputController) Curriculumtypes(ctx echo.Context) error
- func (c *OutputController) Evaluationtypes(ctx echo.Context) error
- func (c *OutputController) Examtypes(ctx echo.Context) error
- func (c *OutputController) Fields(ctx echo.Context) error
- func (c *OutputController) Focuses(ctx echo.Context) error
- func (c *OutputController) Gradetypes(ctx echo.Context) error
- func (c *OutputController) States(ctx echo.Context) error
- type Router
- type TokenClaim
- type UserController
Constants ¶
This section is empty.
Variables ¶
var ( ROLEGROUP_ADMIN = []uint{config.ROLE_COURSEADMIN, config.ROLE_FIELDMANAGER} ROLEGROUP_TEACHER = []uint{config.ROLE_COURSEADMIN, config.ROLE_FIELDMANAGER, config.ROLE_TEACHER} ROLEGROUP_STUDENT = []uint{config.ROLE_COURSEADMIN, config.ROLE_FIELDMANAGER, config.ROLE_TEACHER, config.ROLE_STUDENT} )
Predefined roleGroups
Functions ¶
func RegisterV1Courses ¶
func RegisterV1Courses(g *echo.Group, c *CourseController)
register all output endpoints to router
func RegisterV1Curriculums ¶
func RegisterV1Curriculums(g *echo.Group, c *CurriculumController)
register all output endpoints to router
func RegisterV1Exams ¶
func RegisterV1Exams(g *echo.Group, c *ExamController)
register all output endpoints to router
func RegisterV1GradeTypes ¶
func RegisterV1GradeTypes(g *echo.Group, c *GradeTypeController)
register all output endpoints to router
func RegisterV1MetaCourse ¶
func RegisterV1MetaCourse(g *echo.Group, m *MetaController)
register all output endpoints to router
func RegisterV1Modules ¶
func RegisterV1Modules(g *echo.Group, c *ModuleController)
register all output endpoints to router
func RegisterV1Output ¶
func RegisterV1Output(g *echo.Group, o *OutputController)
register all output endpoints to router
func RegisterV1User ¶
func RegisterV1User(g *echo.Group, u *UserController)
register all output endpoints to router
Types ¶
type BaseController ¶
Controller is the base controller for all API controllers
func NewBaseController ¶
func NewBaseController(provider db.Provider) *BaseController
Constructor for BaseController
func (*BaseController) CheckUserAnyRole ¶
func (c *BaseController) CheckUserAnyRole(ctx echo.Context) *e.ApiError
Allows the user to access the endpoint if the user has any role returns nil if the claim is valid
func (*BaseController) CheckUserRole ¶
check if a user has a role by roleId returns nil if the claim is valid
func (*BaseController) CheckUserRoles ¶
CheckUserRoles loops through multiple roles to check if any is correct. If a correct role is found, it returns nil; otherwise, it returns an error.
func (*BaseController) GetPathParam ¶
func (c *BaseController) GetPathParam(ctx echo.Context, param string) string
Gets the parameter from the request
func (*BaseController) GetPathParamTime ¶
GetPathParamTime retrieves the value of a path parameter from the given context and parses it as a time.Time value. It expects the path parameter to be in the format "30.07.2024". If the parsing is successful, it returns the parsed time.Time value. If the parsing fails, it returns an error.
func (*BaseController) GetPathParamUint ¶
Gets the parameter from the request and converts it to an integer Returns -1 if the conversion fails
type CourseController ¶
type CourseController struct {
*BaseController
Dao *dao.CourseDao
}
Handles the requests for the course resource
func NewCourseController ¶
func NewCourseController(provider db.Provider) *CourseController
Constructor for CourseController
func (*CourseController) Course ¶
func (c *CourseController) Course(ctx echo.Context) error
@Summary Get a specific course @Description Get a specific course @Tags courses @Param id path uint true "Course ID" @Param version path uint true "Course Version" @Produce json @Success 200 {object} models.Course @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/{id}/{version} [get] @Security Bearer
func (*CourseController) Courses ¶
func (c *CourseController) Courses(ctx echo.Context) error
@Summary Get all courses @Description Get all courses @Tags courses @Produce json @Success 200 {array} models.Course @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses [get] @Security Bearer
func (*CourseController) Create ¶
func (c *CourseController) Create(ctx echo.Context) error
@Summary Create a course @Description Create a course @Tags courses @Produce json @Accept json
@Param request body requestmodels.RefCourse true "request body"
@Success 200 {object} models.Course @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses [post] @Security Bearer
func (*CourseController) CreateVersion ¶
func (c *CourseController) CreateVersion(ctx echo.Context) error
@Summary Create a new version of a course @Description Create a new version of a course @Tags courses @Produce json @Accept json
@Param request body requestmodels.RefCourse true "request body" @Param id path uint true "Course ID"
@Success 200 {object} models.Course @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/{id} [post] @Security Bearer
func (*CourseController) Delete ¶
func (c *CourseController) Delete(ctx echo.Context) error
@Summary Delete a course @Description Delete a course @Tags courses @Produce json @Accept json
@Param id path uint true "Course ID" @Param version path uint true "Course Version"
@Success 200 @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/{id}/{version} [delete] @Security Bearer
func (*CourseController) Update ¶
func (c *CourseController) Update(ctx echo.Context) error
@Summary Update a course @Description Update a course @Tags courses @Produce json @Accept json
@Param request body requestmodels.RefCourse true "request body" @Param id path uint true "Course ID" @Param version path uint true "Course Version"
@Success 200 {object} models.Course @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/{id}/{version} [put] @Security Bearer
type CurriculumController ¶
type CurriculumController struct {
*BaseController
Dao *dao.CurriculumDao
}
Handles the requests for the module resource
func NewCurriculumController ¶
func NewCurriculumController(provider db.Provider) *CurriculumController
Constructor for ModuleController
func (*CurriculumController) Create ¶
func (c *CurriculumController) Create(ctx echo.Context) error
@Summary Create a curriculum @Description Create a curriculum @Tags curriculums @Produce json @Accept json
@Param request body requestmodels.RefCurriculum true "request body"
@Success 200 {object} models.Curriculum @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums [post] @Security Bearer
func (*CurriculumController) Curriculum ¶
func (c *CurriculumController) Curriculum(ctx echo.Context) error
@Summary Get a specific curriculum @Description Get a specific curriculum @Tags curriculums @Param id path uint true "Curriculum ID" @Param date path time.Time true "Curriculum StartValidity" @Produce json @Success 200 {object} models.Curriculum @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums/{id}/{date} [get] @Security Bearer
func (*CurriculumController) Curriculums ¶
func (c *CurriculumController) Curriculums(ctx echo.Context) error
@Summary Get all curriculums @Description Get all curriculums @Tags curriculums @Produce json @Success 200 {array} models.Curriculum @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums [get] @Security Bearer
func (*CurriculumController) Delete ¶
func (c *CurriculumController) Delete(ctx echo.Context) error
@Summary Delete a curriculum @Description Delete a curriculum @Tags curriculums @Produce json @Accept json
@Param id path uint true "Curriculum ID" @Param date path time.Time true "Curriculum StartValidity"
@Success 200 @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums/{id}/{date} [delete] @Security Bearer
func (*CurriculumController) Update ¶
func (c *CurriculumController) Update(ctx echo.Context) error
@Summary Update a curriculum @Description Update a curriculum @Tags curriculums @Produce json @Accept json
@Param request body requestmodels.RefCurriculum true "request body" @Param id path uint true "Curriculum ID" @Param date path time.Time true "Curriculum StartValidity"
@Success 200 {object} models.Curriculum @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums/{id}/{date} [put] @Security Bearer
type ExamController ¶
type ExamController struct {
*BaseController
Dao *dao.ExamDao
}
Handles the requests for the exam resource
func NewExamController ¶
func NewExamController(provider db.Provider) *ExamController
Constructor for ExamController
func (*ExamController) Exam ¶
func (c *ExamController) Exam(ctx echo.Context) error
@Summary Get a specific exam @Description Get a specific exam @Tags exams @Param id path uint true "Exam ID" @Produce json @Success 200 {object} models.Exam @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /exams/{id} [get] @Security Bearer
func (*ExamController) Exams ¶
func (c *ExamController) Exams(ctx echo.Context) error
@Summary Get all exams @Description Get all exams @Tags exams @Produce json @Success 200 {array} models.Exam @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /exams [get] @Security Bearer
type GradeTypeController ¶
type GradeTypeController struct {
*BaseController
Dao *dao.GradeTypeDao
}
Handles the requests for the gradetype resource
func NewGradeTypeController ¶
func NewGradeTypeController(provider db.Provider) *GradeTypeController
Constructor for GradeTypeController
func (*GradeTypeController) Create ¶
func (c *GradeTypeController) Create(ctx echo.Context) error
@Summary Create a gradetype @Description Create a gradetype @Tags gradetype @Produce json @Accept json
@Param request body models.Gradetype true "request body"
@Success 200 {object} models.Gradetype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes [post] @Security Bearer
func (*GradeTypeController) Delete ¶
func (c *GradeTypeController) Delete(ctx echo.Context) error
@Summary Delete a gradetype @Description Delete a gradetype @Tags gradetypes @Produce json @Accept json
@Param id path uint true "GradeType ID"
@Success 200 @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes/{id} [delete] @Security Bearer
func (*GradeTypeController) GradeType ¶
func (c *GradeTypeController) GradeType(ctx echo.Context) error
@Summary Get a specific gradetype @Description Get a specific gradetype @Tags gradetype @Param id path uint true "GradeType ID" @Produce json @Success 200 {object} models.Gradetype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes/{id}/ [get] @Security Bearer
func (*GradeTypeController) GradeTypes ¶
func (c *GradeTypeController) GradeTypes(ctx echo.Context) error
@Summary Get all gradetypes @Description Get all gradetypes @Tags gradetype @Produce json @Success 200 {array} models.Gradetype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes [get] @Security Bearer
func (*GradeTypeController) Update ¶
func (c *GradeTypeController) Update(ctx echo.Context) error
@Summary Update a gradetype @Description Update a gradetype @Tags grapetype @Produce json @Accept json
@Param request body models.Gradetype true "request body" @Param id path uint true "GradeType ID"
@Success 200 {object} models.Gradetype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes/{id} [put] @Security Bearer
type MetaController ¶
type MetaController struct {
*BaseController
// contains filtered or unexported fields
}
Handles the requests for the meta resources
func NewMetaController ¶
func NewMetaController(provider db.Provider) *MetaController
Constructor for MetaController
func (*MetaController) MetaCourses ¶
func (m *MetaController) MetaCourses(ctx echo.Context) error
@Summary Get Metadata for Course @Description Get Metadata for Course @Tags meta, courses @Produce json @Success 200 {array} models.MetaCourse @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/meta [get] @Security Bearer
func (*MetaController) MetaCurriculums ¶
func (c *MetaController) MetaCurriculums(ctx echo.Context) error
@Summary Get Metadata for Curriculums @Description Get Metadata for Curriculums @Tags meta, curriculums @Produce json @Success 200 {array} models.MetaCurriculums @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums/meta [get] @Security Bearer
func (*MetaController) MetaModules ¶
func (c *MetaController) MetaModules(ctx echo.Context) error
@Summary Get Metadata for Module @Description Get Metadata for Module @Tags meta, modules @Produce json @Success 200 {array} models.MetaModules @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules/meta [get] @Security Bearer
func (*MetaController) MyCoursesAsTeacher ¶
func (c *MetaController) MyCoursesAsTeacher(ctx echo.Context) error
@Summary Get your Courses as a teacher @Description Get Courses as a teacher selected by teached by userinfo from accesstoken @Tags meta, courses @Produce json @Success 200 {array} models.TeacherCourses @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/teacher [get] @Security Bearer
func (*MetaController) MyCurriculumsAsStudent ¶
func (c *MetaController) MyCurriculumsAsStudent(ctx echo.Context) error
@Summary Get Curriculums as a student @Description Get Curriculums as a student selected by userinfo from accesstoken @Tags meta, curriculums @Produce json @Success 200 {array} models.StudentCurriculums @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums/student [get] @Security Bearer
func (*MetaController) SetStudentCurriculumLink ¶
func (c *MetaController) SetStudentCurriculumLink(ctx echo.Context) error
@Summary Set start year and curriculumId as student @Description Set start year and curriculumId as student by userinfo from accesstoken @Tags meta, curriculums, users @Param id path uint true "Curriculum ID" @Param date path time.Time true "Class start date" @Produce json @Success 200 {array} models.User @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /onboarding [put] @Security Bearer
type ModuleController ¶
type ModuleController struct {
*BaseController
Dao *dao.ModuleDao
}
Handles the requests for the module resource
func NewModuleController ¶
func NewModuleController(provider db.Provider) *ModuleController
Constructor for ModuleController
func (*ModuleController) Create ¶
func (c *ModuleController) Create(ctx echo.Context) error
@Summary Create a module @Description Create a module @Tags modules @Produce json @Accept json
@Param request body requestmodels.RefModule true "request body"
@Success 200 {object} models.Module @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules [post] @Security Bearer
func (*ModuleController) CreateVersion ¶
func (c *ModuleController) CreateVersion(ctx echo.Context) error
@Summary Create a new version of a module @Description Create a new version of a module @Tags modules @Produce json @Accept json
@Param request body requestmodels.RefModule true "request body" @Param id path uint true "Module ID"
@Success 200 {object} models.Module @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules/{id} [post] @Security Bearer
func (*ModuleController) Module ¶
func (c *ModuleController) Module(ctx echo.Context) error
@Summary Get a specific module @Description Get a specific module @Tags modules @Param id path uint true "Module ID" @Param version path uint true "Module Version" @Produce json @Success 200 {object} models.Module @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules/{id}/{version} [get] @Security Bearer
func (*ModuleController) Modules ¶
func (c *ModuleController) Modules(ctx echo.Context) error
@Summary Get all modules @Description Get all modules @Tags modules @Produce json @Success 200 {array} models.Module @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules [get] @Security Bearer
func (*ModuleController) Update ¶
func (c *ModuleController) Update(ctx echo.Context) error
@Summary Update a module @Description Update a module @Tags modules @Produce json @Accept json
@Param request body requestmodels.RefModule true "request body" @Param id path uint true "Module ID" @Param version path uint true "Module Version"
@Success 200 {object} models.Module @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules/{id}/{version} [put] @Security Bearer
type OutputController ¶
type OutputController struct {
*BaseController
// contains filtered or unexported fields
}
All list outputs under one big object
func NewOutputController ¶
func NewOutputController(provider db.Provider) *OutputController
Constructor for output controller
func (*OutputController) Curriculumtypes ¶
func (c *OutputController) Curriculumtypes(ctx echo.Context) error
@Summary Get all curriculum types @Description Get all curriculum types @Tags curriculumtypes @Produce json @Success 200 {array} models.Curriculumtype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculumtypes [get] @Security Bearer
func (*OutputController) Evaluationtypes ¶
func (c *OutputController) Evaluationtypes(ctx echo.Context) error
@Summary Get all evaluation types @Description Get all evaluation types @Tags evaluationtypes @Produce json @Success 200 {array} models.Evaluationtype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /evaluationtypes [get] @Security Bearer
func (*OutputController) Examtypes ¶
func (c *OutputController) Examtypes(ctx echo.Context) error
@Summary Get all exam types @Description Get all exam types @Tags examtypes @Produce json @Success 200 {array} models.Examtype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /examtypes [get] @Security Bearer
func (*OutputController) Fields ¶
func (c *OutputController) Fields(ctx echo.Context) error
@Summary Get all fields @Description Get all fields @Tags fields @Produce json @Success 200 {array} models.Field @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /fields [get] @Security Bearer
func (*OutputController) Focuses ¶
func (c *OutputController) Focuses(ctx echo.Context) error
@Summary Get all focuses @Description Get all focuses @Tags focuses @Produce json @Success 200 {array} models.Focus @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /focuses [get] @Security Bearer
func (*OutputController) Gradetypes ¶
func (c *OutputController) Gradetypes(ctx echo.Context) error
@Summary Get all grade types @Description Get all grade types @Tags gradetypes @Produce json @Success 200 {array} models.Gradetype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes [get] @Security Bearer
func (*OutputController) States ¶
func (c *OutputController) States(ctx echo.Context) error
@Summary Get all states @Description Get all states @Tags states @Produce json @Success 200 {array} models.State @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /states [get] @Security Bearer
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
Router is the main router for the API
func (*Router) RegisterV1 ¶
func (r *Router) RegisterV1()
type TokenClaim ¶
type TokenClaim struct {
Email string `json:"preferred_username"`
Name string `json:"name"`
Roles []string `json:"roles"`
jwt.RegisteredClaims
}
type UserController ¶
type UserController struct {
*BaseController
Dao *dao.UserDao
}
Handles the requests for the user resource
func NewUserController ¶
func NewUserController(provider db.Provider) *UserController
Constructor for UserController
func (*UserController) User ¶
func (c *UserController) User(ctx echo.Context) error
@Summary Get the current user @Description Get the current user (from Bearer token) @Tags users @Produce json @Success 200 {object} models.User @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /user [get] @Security Bearer