From 1073d54813a25e1e9c0c41b989c69f77d2aca9cb Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Mon, 12 Aug 2019 16:24:17 +0800 Subject: Add username format check. --- Timeline/Controllers/UserController.cs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'Timeline/Controllers/UserController.cs') diff --git a/Timeline/Controllers/UserController.cs b/Timeline/Controllers/UserController.cs index 6f2fe77f..d38f96e1 100644 --- a/Timeline/Controllers/UserController.cs +++ b/Timeline/Controllers/UserController.cs @@ -18,9 +18,11 @@ namespace Timeline.Controllers { public const int Get_NotExist = -1001; - public const int Patch_NotExist = -2001; + public const int Put_BadUsername = -2001; - public const int ChangePassword_BadOldPassword = -3001; + public const int Patch_NotExist = -3001; + + public const int ChangePassword_BadOldPassword = -4001; } private readonly ILogger _logger; @@ -53,17 +55,25 @@ namespace Timeline.Controllers [HttpPut("users/{username}"), AdminAuthorize] public async Task Put([FromBody] UserPutRequest request, [FromRoute] string username) { - var result = await _userService.PutUser(username, request.Password, request.Administrator.Value); - switch (result) + try + { + var result = await _userService.PutUser(username, request.Password, request.Administrator.Value); + switch (result) + { + case PutResult.Created: + _logger.LogInformation(FormatLogMessage("A user is created.", Pair("Username", username))); + return CreatedAtAction("Get", new { username }, CommonPutResponse.Created); + case PutResult.Modified: + _logger.LogInformation(FormatLogMessage("A user is modified.", Pair("Username", username))); + return Ok(CommonPutResponse.Modified); + default: + throw new Exception("Unreachable code."); + } + } + catch (UsernameBadFormatException e) { - case PutResult.Created: - _logger.LogInformation(FormatLogMessage("A user is created.", Pair("Username", username))); - return CreatedAtAction("Get", new { username }, CommonPutResponse.Created); - case PutResult.Modified: - _logger.LogInformation(FormatLogMessage("A user is modified.", Pair("Username", username))); - return Ok(CommonPutResponse.Modified); - default: - throw new Exception("Unreachable code."); + _logger.LogInformation(e, FormatLogMessage("Attempt to create a user with bad username failed.", Pair("Username", username))); + return BadRequest(new CommonResponse(ErrorCodes.Put_BadUsername, "Username is of bad format.")); } } -- cgit v1.2.3