avatar update

vnext
Paul Schneider 8 years ago
parent b0ad66ce12
commit 94556bcb77
1 changed files with 29 additions and 9 deletions

@ -55,7 +55,7 @@ namespace Yavsc.WebApi.Controllers
if (!result.Succeeded) if (!result.Succeeded)
{ {
AddErrors(result); AddErrors("NewPassword",result);
return new BadRequestObjectResult(ModelState); return new BadRequestObjectResult(ModelState);
} }
} }
@ -74,7 +74,7 @@ namespace Yavsc.WebApi.Controllers
IdentityResult result = await UserManager.AddPasswordAsync(user, model.NewPassword); IdentityResult result = await UserManager.AddPasswordAsync(user, model.NewPassword);
if (!result.Succeeded) if (!result.Succeeded)
{ {
AddErrors (result); AddErrors ("NewPassword",result);
return new BadRequestObjectResult(ModelState); return new BadRequestObjectResult(ModelState);
} }
} }
@ -96,17 +96,17 @@ namespace Yavsc.WebApi.Controllers
if (!result.Succeeded) if (!result.Succeeded)
{ {
AddErrors (result); AddErrors ("Register",result);
return new BadRequestObjectResult(ModelState); return new BadRequestObjectResult(ModelState);
} }
await _signInManager.SignInAsync(user, isPersistent: false); await _signInManager.SignInAsync(user, isPersistent: false);
return Ok(); return Ok();
} }
private void AddErrors(IdentityResult result) private void AddErrors(string key, IdentityResult result)
{ {
foreach (var error in result.Errors) foreach (var error in result.Errors)
{ {
ModelState.AddModelError(string.Empty, error.Description); ModelState.AddModelError(key, error.Description);
} }
} }
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
@ -126,19 +126,39 @@ namespace Yavsc.WebApi.Controllers
return new BadRequestObjectResult( return new BadRequestObjectResult(
new { error = "user not found" }); new { error = "user not found" });
var uid = User.GetUserId(); var uid = User.GetUserId();
if (uid == null)
return new BadRequestObjectResult(
new { error = "user not identified" });
var iduser = await UserManager.FindByIdAsync(uid); var iduser = await UserManager.FindByIdAsync(uid);
var user = new Me(iduser.Id,iduser.UserName, var user = new Me(iduser.Id,iduser.UserName,
new string [] { iduser.Email }, new string [] { iduser.Email },
await UserManager.GetRolesAsync(iduser), await UserManager.GetRolesAsync(iduser),
null // TODO better (an avatar, or Web site url) iduser.Avatar, iduser.PostalAddress?.Address
); );
return Ok(user); return Ok(user);
} }
[HttpPut("~/api/me")]
public async Task<IActionResult> 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();
}
} }
} }

Loading…