diff --git a/Apps/Api/Controllers/AccountsController.cs b/Apps/Api/Controllers/AccountsController.cs index ba6ade4..878c313 100644 --- a/Apps/Api/Controllers/AccountsController.cs +++ b/Apps/Api/Controllers/AccountsController.cs @@ -26,6 +26,22 @@ namespace Api.Controllers _tokenParameters = tokenParameters; } + [HttpPost("register")] + [AllowAnonymous] + public async Task Register(RegisterViewModel command) + { + var user = new User(command.Username); + var result = await _usersManager.CreateAsync(user, command.Password); + + if (!result.Succeeded) + { + return BadRequest(); + } + + return NoContent(); + } + + /// /// Récupère un jeton d'accès pour un utilisateur particulier. /// diff --git a/Apps/Api/Models/RegisterViewModel.cs b/Apps/Api/Models/RegisterViewModel.cs new file mode 100644 index 0000000..3f84a64 --- /dev/null +++ b/Apps/Api/Models/RegisterViewModel.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations; + +namespace Api.Models +{ + public sealed class RegisterViewModel + { + [Required] + public string Username { get; set; } + + [Required] + public string Password { get; set; } + } +} \ No newline at end of file diff --git a/Apps/Api/swagger.json b/Apps/Api/swagger.json index e6fbcad..5ebe2de 100644 --- a/Apps/Api/swagger.json +++ b/Apps/Api/swagger.json @@ -6,6 +6,39 @@ "version": "1.0.0" }, "paths": { + "/api/accounts/register": { + "post": { + "tags": [ + "Accounts" + ], + "operationId": "Accounts_Register", + "requestBody": { + "x-name": "command", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RegisterViewModel" + } + } + }, + "required": true, + "x-position": 1 + }, + "responses": { + "200": { + "description": "", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, "/api/accounts/login": { "post": { "tags": [ @@ -309,6 +342,24 @@ }, "components": { "schemas": { + "RegisterViewModel": { + "type": "object", + "additionalProperties": false, + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + } + } + }, "LoginViewModel": { "type": "object", "additionalProperties": false,