Merge docs -> dev
This commit is contained in:
		
						commit
						2ffbc2f9fd
					
				
					 3 changed files with 202 additions and 10 deletions
				
			
		|  | @ -19,19 +19,117 @@ const docTemplate = `{ | |||
|     "host": "{{.Host}}", | ||||
|     "basePath": "{{.BasePath}}", | ||||
|     "paths": { | ||||
|         "/api/register": { | ||||
|         "/login": { | ||||
|             "post": { | ||||
|                 "description": "logs the user in and returns a jwt token", | ||||
|                 "consumes": [ | ||||
|                     "application/json" | ||||
|                 ], | ||||
|                 "produces": [ | ||||
|                     "text/plain" | ||||
|                 ], | ||||
|                 "tags": [ | ||||
|                     "User" | ||||
|                 ], | ||||
|                 "summary": "login", | ||||
|                 "parameters": [ | ||||
|                     { | ||||
|                         "description": "login info", | ||||
|                         "name": "NewUser", | ||||
|                         "in": "body", | ||||
|                         "required": true, | ||||
|                         "schema": { | ||||
|                             "$ref": "#/definitions/types.NewUser" | ||||
|                         } | ||||
|                     } | ||||
|                 ], | ||||
|                 "responses": { | ||||
|                     "200": { | ||||
|                         "description": "Successfully signed token for user", | ||||
|                         "schema": { | ||||
|                             "type": "Token" | ||||
|                         } | ||||
|                     }, | ||||
|                     "400": { | ||||
|                         "description": "Bad request", | ||||
|                         "schema": { | ||||
|                             "type": "string" | ||||
|                         } | ||||
|                     }, | ||||
|                     "401": { | ||||
|                         "description": "Unauthorized", | ||||
|                         "schema": { | ||||
|                             "type": "string" | ||||
|                         } | ||||
|                     }, | ||||
|                     "500": { | ||||
|                         "description": "Internal server error", | ||||
|                         "schema": { | ||||
|                             "type": "string" | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "/loginerenew": { | ||||
|             "post": { | ||||
|                 "description": "renews the users token", | ||||
|                 "consumes": [ | ||||
|                     "application/json" | ||||
|                 ], | ||||
|                 "produces": [ | ||||
|                     "text/plain" | ||||
|                 ], | ||||
|                 "tags": [ | ||||
|                     "User" | ||||
|                 ], | ||||
|                 "summary": "renews the users token", | ||||
|                 "responses": { | ||||
|                     "200": { | ||||
|                         "description": "Successfully signed token for user", | ||||
|                         "schema": { | ||||
|                             "type": "Token" | ||||
|                         } | ||||
|                     }, | ||||
|                     "401": { | ||||
|                         "description": "Unauthorized", | ||||
|                         "schema": { | ||||
|                             "type": "string" | ||||
|                         } | ||||
|                     }, | ||||
|                     "500": { | ||||
|                         "description": "Internal server error", | ||||
|                         "schema": { | ||||
|                             "type": "string" | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "/register": { | ||||
|             "post": { | ||||
|                 "description": "Register a new user", | ||||
|                 "consumes": [ | ||||
|                     "application/json" | ||||
|                 ], | ||||
|                 "produces": [ | ||||
|                     "application/json" | ||||
|                     "text/plain" | ||||
|                 ], | ||||
|                 "tags": [ | ||||
|                     "User" | ||||
|                 ], | ||||
|                 "summary": "Register a new user", | ||||
|                 "parameters": [ | ||||
|                     { | ||||
|                         "description": "User to register", | ||||
|                         "name": "NewUser", | ||||
|                         "in": "body", | ||||
|                         "required": true, | ||||
|                         "schema": { | ||||
|                             "$ref": "#/definitions/types.NewUser" | ||||
|                         } | ||||
|                     } | ||||
|                 ], | ||||
|                 "responses": { | ||||
|                     "200": { | ||||
|                         "description": "User added", | ||||
|  | @ -53,6 +151,60 @@ const docTemplate = `{ | |||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "/userdelete/{username}": { | ||||
|             "delete": { | ||||
|                 "description": "UserDelete deletes a user from the database", | ||||
|                 "consumes": [ | ||||
|                     "application/json" | ||||
|                 ], | ||||
|                 "produces": [ | ||||
|                     "text/plain" | ||||
|                 ], | ||||
|                 "tags": [ | ||||
|                     "User" | ||||
|                 ], | ||||
|                 "summary": "Deletes a user", | ||||
|                 "responses": { | ||||
|                     "200": { | ||||
|                         "description": "User deleted", | ||||
|                         "schema": { | ||||
|                             "type": "string" | ||||
|                         } | ||||
|                     }, | ||||
|                     "401": { | ||||
|                         "description": "Unauthorized", | ||||
|                         "schema": { | ||||
|                             "type": "string" | ||||
|                         } | ||||
|                     }, | ||||
|                     "403": { | ||||
|                         "description": "You can only delete yourself", | ||||
|                         "schema": { | ||||
|                             "type": "string" | ||||
|                         } | ||||
|                     }, | ||||
|                     "500": { | ||||
|                         "description": "Internal server error", | ||||
|                         "schema": { | ||||
|                             "type": "string" | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|     "definitions": { | ||||
|         "types.NewUser": { | ||||
|             "type": "object", | ||||
|             "properties": { | ||||
|                 "password": { | ||||
|                     "type": "string" | ||||
|                 }, | ||||
|                 "username": { | ||||
|                     "type": "string" | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|     "externalDocs": { | ||||
|  |  | |||
|  | @ -16,11 +16,12 @@ import ( | |||
| //	@Description	Register a new user | ||||
| //	@Tags			User | ||||
| //	@Accept			json | ||||
| //	@Produce		json | ||||
| //	@Success		200	{string}	string	"User added" | ||||
| //	@Failure		400	{string}	string	"Bad request" | ||||
| //	@Failure		500	{string}	string	"Internal server error" | ||||
| //	@Router			/api/register [post] | ||||
| //	@Produce		plain | ||||
| //	@Param			NewUser	body		types.NewUser true	"User to register" | ||||
| //	@Success		200			{string}	string			"User added" | ||||
| //	@Failure		400			{string}	string			"Bad request" | ||||
| //	@Failure		500			{string}	string			"Internal server error" | ||||
| //	@Router			/register [post] | ||||
| func (gs *GState) Register(c *fiber.Ctx) error { | ||||
| 	u := new(types.NewUser) | ||||
| 	if err := c.BodyParser(u); err != nil { | ||||
|  | @ -40,6 +41,17 @@ func (gs *GState) Register(c *fiber.Ctx) error { | |||
| 
 | ||||
| // This path should obviously be protected in the future | ||||
| // UserDelete deletes a user from the database | ||||
| // | ||||
| //	@Summary		Deletes a user | ||||
| //	@Description	UserDelete deletes a user from the database | ||||
| //	@Tags			User | ||||
| //	@Accept			json | ||||
| //	@Produce		plain | ||||
| //	@Success		200			{string}	string			"User deleted" | ||||
| //	@Failure		403			{string}	string			"You can only delete yourself" | ||||
| //	@Failure		500			{string}	string			"Internal server error" | ||||
| //	@Failure		401			{string}	string			"Unauthorized" | ||||
| //	@Router			/userdelete/{username} [delete] | ||||
| func (gs *GState) UserDelete(c *fiber.Ctx) error { | ||||
| 	// Read from path parameters | ||||
| 	username := c.Params("username") | ||||
|  | @ -62,8 +74,21 @@ func (gs *GState) UserDelete(c *fiber.Ctx) error { | |||
| } | ||||
| 
 | ||||
| // Login is a simple login handler that returns a JWT token | ||||
| // | ||||
| //	@Summary		login | ||||
| //	@Description	logs the user in and returns a jwt token | ||||
| //	@Tags			User | ||||
| //	@Accept			json | ||||
| //	@Param			NewUser	body		types.NewUser true	"login info" | ||||
| //	@Produce		plain | ||||
| //	@Success		200			Token		types.Token		"Successfully signed token for user" | ||||
| //	@Failure		400			{string}	string			"Bad request" | ||||
| //	@Failure		401			{string}	string			"Unauthorized" | ||||
| //	@Failure		500			{string}	string			"Internal server error" | ||||
| //	@Router			/login [post] | ||||
| func (gs *GState) Login(c *fiber.Ctx) error { | ||||
| 	// The body type is identical to a NewUser | ||||
| 
 | ||||
| 	u := new(types.NewUser) | ||||
| 	if err := c.BodyParser(u); err != nil { | ||||
| 		log.Warn("Error parsing body") | ||||
|  | @ -94,11 +119,21 @@ func (gs *GState) Login(c *fiber.Ctx) error { | |||
| 		return c.SendStatus(fiber.StatusInternalServerError) | ||||
| 	} | ||||
| 
 | ||||
| 	log.Info("Successfully signed token for user:", u.Username) | ||||
| 	return c.JSON(fiber.Map{"token": t}) | ||||
| 	println("Successfully signed token for user:", u.Username) | ||||
| 	return c.JSON(types.Token{Token: t}) | ||||
| } | ||||
| 
 | ||||
| // LoginRenew is a simple handler that renews the token | ||||
| // | ||||
| //	@Summary		renews the users token | ||||
| //	@Description	renews the users token | ||||
| //	@Tags			User | ||||
| //	@Accept			json | ||||
| //	@Produce		plain | ||||
| //	@Success		200			Token		types.Token		"Successfully signed token for user" | ||||
| //	@Failure		401			{string}	string			"Unauthorized" | ||||
| //	@Failure		500			{string}	string			"Internal server error" | ||||
| //	@Router			/loginerenew [post] | ||||
| func (gs *GState) LoginRenew(c *fiber.Ctx) error { | ||||
| 	user := c.Locals("user").(*jwt.Token) | ||||
| 
 | ||||
|  | @ -119,7 +154,7 @@ func (gs *GState) LoginRenew(c *fiber.Ctx) error { | |||
| 	} | ||||
| 
 | ||||
| 	log.Info("Successfully renewed token for user:", user.Claims.(jwt.MapClaims)["name"]) | ||||
| 	return c.JSON(fiber.Map{"token": t}) | ||||
| 	return c.JSON(types.Token{Token: t}) | ||||
| } | ||||
| 
 | ||||
| // ListAllUsers is a handler that returns a list of all users in the application database | ||||
|  |  | |||
|  | @ -27,3 +27,8 @@ type PublicUser struct { | |||
| 	UserId   string `json:"userId"` | ||||
| 	Username string `json:"username"` | ||||
| } | ||||
| 
 | ||||
| // wrapper type for token | ||||
| type Token struct { | ||||
| 	Token string `json:"token"` | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Imbus
						Imbus