From 94556bcb773044c196e5051b08cef5fc100b26d2 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Fri, 23 Sep 2016 12:25:34 +0200 Subject: [PATCH] avatar update --- Yavsc/ApiControllers/AccountController.cs | 38 +++++++++++++++++------ 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/Yavsc/ApiControllers/AccountController.cs b/Yavsc/ApiControllers/AccountController.cs index 26ae4101..5bc4b946 100644 --- a/Yavsc/ApiControllers/AccountController.cs +++ b/Yavsc/ApiControllers/AccountController.cs @@ -55,7 +55,7 @@ namespace Yavsc.WebApi.Controllers if (!result.Succeeded) { - AddErrors(result); + AddErrors("NewPassword",result); return new BadRequestObjectResult(ModelState); } } @@ -74,7 +74,7 @@ namespace Yavsc.WebApi.Controllers IdentityResult result = await UserManager.AddPasswordAsync(user, model.NewPassword); if (!result.Succeeded) { - AddErrors (result); + AddErrors ("NewPassword",result); return new BadRequestObjectResult(ModelState); } } @@ -96,17 +96,17 @@ namespace Yavsc.WebApi.Controllers if (!result.Succeeded) { - AddErrors (result); + AddErrors ("Register",result); return new BadRequestObjectResult(ModelState); } await _signInManager.SignInAsync(user, isPersistent: false); return Ok(); } - private void AddErrors(IdentityResult result) + private void AddErrors(string key, IdentityResult result) { foreach (var error in result.Errors) { - ModelState.AddModelError(string.Empty, error.Description); + ModelState.AddModelError(key, error.Description); } } protected override void Dispose(bool disposing) @@ -126,19 +126,39 @@ namespace Yavsc.WebApi.Controllers return new BadRequestObjectResult( new { error = "user not found" }); var uid = User.GetUserId(); - if (uid == null) - return new BadRequestObjectResult( - new { error = "user not identified" }); var iduser = await UserManager.FindByIdAsync(uid); var user = new Me(iduser.Id,iduser.UserName, new stringĀ [] { iduser.Email }, await UserManager.GetRolesAsync(iduser), - null // TODO better (an avatar, or Web site url) + iduser.Avatar, iduser.PostalAddress?.Address ); return Ok(user); } + [HttpPut("~/api/me")] + public async Task UpdateMe(MyUpdate me) + { + var ko = new BadRequestObjectResult( + new { error = "Specify some valid update request." }); + if (me==null) return ko; + if (me.Avatar==null && me.UserName == null) return ko; + var user = await _userManager.FindByIdAsync(User.GetUserId()); + + if (me.UserName !=null) { + var result = await _userManager.SetUserNameAsync(user, me.UserName); + } + if (me.Avatar!=null) { + user.Avatar = me.Avatar; + var result = await _userManager.UpdateAsync(user); + if (!result.Succeeded) + { + AddErrors("Avatar", result); + return new BadRequestObjectResult(ModelState); + } + } + return Ok(); + } } }