public ActionResult <CovenantUser> EditUser([FromBody] CovenantUserLogin user) { var matching_user = _context.Users.FirstOrDefault(U => user.UserName == U.UserName); if (matching_user == null) { return(NotFound($"NotFound - Could not find CovenantUser with username: {user.UserName}")); } CovenantUser currentUser = GetCurrentAPIUser(); var admins = from users in _context.Users join userroles in _context.UserRoles on users.Id equals userroles.UserId join roles in _context.Roles on userroles.RoleId equals roles.Id where roles.Name == "Administrator" select users.UserName; if (currentUser.UserName != matching_user.UserName && !admins.Contains(currentUser.UserName)) { return(BadRequest($"BadRequest - Current user: {currentUser.UserName} is not an Administrator and cannot change password of user: {user.Password}")); } matching_user.PasswordHash = _userManager.PasswordHasher.HashPassword(matching_user, user.Password); Task <IdentityResult> task = _userManager.UpdateAsync(matching_user); task.Wait(); if (!task.Result.Succeeded) { return(BadRequest($"BadRequest - Could not set new password for CovenantUser with username: {user.UserName}")); } _context.Users.Update(matching_user); _context.SaveChanges(); matching_user.PasswordHash = ""; matching_user.SecurityStamp = ""; return(matching_user); }
public ActionResult <CovenantUserLoginResult> Login([FromBody] CovenantUserLogin login) { Microsoft.AspNetCore.Identity.SignInResult result = this.GetPasswordSignInResult(login.UserName, login.Password); if (!result.Succeeded) { return(new UnauthorizedResult()); } CovenantUser user = _userManager.Users.FirstOrDefault(U => U.UserName == login.UserName); if (user == null) { return(NotFound($"NotFound - User with username: {login.UserName}")); } List <string> userRoles = _context.UserRoles.Where(UR => UR.UserId == user.Id).Select(UR => UR.RoleId).ToList(); List <string> roles = _context.Roles.Where(R => userRoles.Contains(R.Id)).Select(R => R.Name).ToList(); string token = Utilities.GenerateJwtToken( login.UserName, user.Id, roles.ToArray(), _configuration["JwtKey"], _configuration["JwtIssuer"], _configuration["JwtAudience"], _configuration["JwtExpireDays"] ); return(new CovenantUserLoginResult { success = true, token = token }); }
public async Task <CovenantUser> MakeCreateUser(string newUserName, string newPassword) { var userData = new CovenantUserLogin(newUserName, newPassword); var result = await Api.ApiUsersPostWithHttpMessagesAsync(userData); return(result.Body); }
public ActionResult <CovenantUser> CreateUser([FromBody] CovenantUserLogin login) { CovenantUser user = new CovenantUser { UserName = login.UserName }; _userManager.CreateAsync(user, login.Password).Wait(); CovenantUser savedUser = _context.Users.FirstOrDefault(U => U.UserName == user.UserName); return(CreatedAtRoute(nameof(GetUser), new { uid = savedUser.Id }, savedUser)); }
public async Task <IActionResult> Edit(CovenantUserLogin login) { try { CovenantUser user = await _context.GetUserByUsername(login.UserName); await _context.EditUser(_userManager, user, login); return(RedirectToAction(nameof(Index))); } catch (Exception e) when(e is ControllerNotFoundException || e is ControllerBadRequestException || e is ControllerUnauthorizedException) { return(View(new CovenantUserLogin { UserName = login.UserName, Password = "******" })); } }
public async Task <ActionResult <CovenantUserLoginResult> > Login([FromBody] CovenantUserLogin login) { try { return(await _context.Login(_signInManager, _configuration, login)); } catch (ControllerNotFoundException e) { return(NotFound(e.Message)); } catch (ControllerBadRequestException e) { return(BadRequest(e.Message)); } catch (ControllerUnauthorizedException) { return(new UnauthorizedResult()); } }
public async Task <ActionResult <CovenantUserLoginResult> > Login([FromBody] CovenantUserLogin login) { try { return(await _service.Login(login)); } catch (ControllerNotFoundException e) { return(NotFound(e.Message)); } catch (ControllerBadRequestException e) { return(BadRequest(e.Message)); } catch (ControllerUnauthorizedException) { return(new UnauthorizedResult()); } }
public async Task <ActionResult <CovenantUser> > CreateUser([FromBody] CovenantUserLogin login) { try { CovenantUser user = await _context.CreateUser(_userManager, login, _eventhub); return(CreatedAtRoute(nameof(GetUser), new { id = user.Id }, user)); } catch (ControllerNotFoundException e) { return(NotFound(e.Message)); } catch (ControllerBadRequestException e) { return(BadRequest(e.Message)); } catch (ControllerUnauthorizedException) { return(new UnauthorizedResult()); } }
public async Task <ActionResult <CovenantUser> > EditUser([FromBody] CovenantUserLogin user) { try { CovenantUser editedUser = await _context.EditUser(_userManager, HttpContext.User, user); editedUser.PasswordHash = ""; return(editedUser); } catch (ControllerNotFoundException e) { return(NotFound(e.Message)); } catch (ControllerBadRequestException e) { return(BadRequest(e.Message)); } catch (ControllerUnauthorizedException) { return(new UnauthorizedResult()); } }
public async Task <ActionResult <CovenantUserLoginResult> > Login([FromBody] CovenantUserLogin login) { var result = await _signInManager.PasswordSignInAsync(login.UserName, login.Password, false, false); if (!result.Succeeded) { return(new UnauthorizedResult()); } CovenantUser user = _userManager.Users.FirstOrDefault(U => U.UserName == login.UserName); List <string> userRoles = _context.UserRoles.Where(UR => UR.UserId == user.Id).Select(UR => UR.RoleId).ToList(); List <string> roles = _context.Roles.Where(R => userRoles.Contains(R.Id)).Select(R => R.Name).ToList(); string token = Utilities.GenerateJwtToken( login.UserName, user.Id, roles.ToArray(), _configuration["JwtKey"], _configuration["JwtIssuer"], _configuration["JwtAudience"], _configuration["JwtExpireDays"] ); return(new CovenantUserLoginResult { success = true, token = token }); }
public ActionResult <CovenantUser> CreateUser([FromBody] CovenantUserLogin login) { CovenantUser user = new CovenantUser { UserName = login.UserName }; IdentityResult result = this.CreateCovenantUser(user, login.Password); if (!result.Succeeded) { List <IdentityError> errors = result.Errors.ToList(); string ErrorMessage = $"BadRequest - Could not create CovenantUser: {login.UserName}"; foreach (IdentityError error in result.Errors) { ErrorMessage += Environment.NewLine + error.Description; } return(BadRequest(ErrorMessage)); } CovenantUser savedUser = _context.Users.FirstOrDefault(U => U.UserName == user.UserName); if (savedUser == null) { return(NotFound($"NotFound - Could not find CovenantUser with username: {login.UserName}")); } string savedRoles = String.Join(",", _context.UserRoles.Where(UR => UR.UserId == savedUser.Id).ToList()); DateTime eventTime = DateTime.UtcNow; _context.Events.Add(new Event { Time = eventTime, MessageHeader = "[" + eventTime + " UTC] User: "******" with roles: " + savedRoles + " has been created!", Level = Event.EventLevel.Highlight, Context = "Users" }); return(CreatedAtRoute(nameof(GetUser), new { id = savedUser.Id }, savedUser)); }
public async Task <IActionResult> Login(CovenantUserLogin login, string returnUrl = "") { try { var result = await _signInManager.PasswordSignInAsync(login.UserName, login.Password, true, lockoutOnFailure : false); if (!result.Succeeded == true) { ModelState.AddModelError(string.Empty, "Incorrect username or password"); return(View()); } if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl)) { return(LocalRedirect(returnUrl)); } return(RedirectToAction("Index", "Home")); } catch (Exception e) when(e is ControllerNotFoundException || e is ControllerBadRequestException || e is ControllerUnauthorizedException) { ModelState.AddModelError(string.Empty, e.Message); return(View()); } }
public Task <CovenantUser> EditUser(CovenantUser currentUser, CovenantUserLogin user) { return(_connection.InvokeAsync <CovenantUser>("EditUser", currentUser, user)); }
public Task <CovenantUser> CreateUser(CovenantUserLogin login) { return(_connection.InvokeAsync <CovenantUser>("CreateUser", login)); }
public Task <CovenantUserLoginResult> Login(CovenantUserLogin login) { return(_connection.InvokeAsync <CovenantUserLoginResult>("Login", login)); }