public async Task <IHttpActionResult> CreateUser(AccountBindingModel createUserModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = new ApplicationUser() { UserName = createUserModel.Username, Email = createUserModel.Email, FirstName = createUserModel.FirstName, LastName = createUserModel.LastName, Level = 3, JoinDate = DateTime.Now.Date, }; IdentityResult addUserResult = await AppUserManager.CreateAsync(user, createUserModel.Password); if (!addUserResult.Succeeded) { return(GetErrorResult(addUserResult)); } Uri locationHeader = new Uri(Url.Link("GetUserById", new { id = user.Id })); return(Created(locationHeader, TheModelFactory.Create(user))); }
/// <summary> /// Login to the server , basically receive a token that will be saved for next http requests /// </summary> /// <param name="user"> the user to login</param> /// <param name="error">error callback</param> /// <param name="success">success callback</param> /// <returns></returns> public static async Task Login(AccountBindingModel user, Action <FlurlHttpException> error = null, Action <dynamic> success = null) { try { var response = await API.Login.PostUrlEncodedAsync(new { username = user.UserName, password = user.Password, grant_type = "password" }).ReceiveJson(); Properties.Settings.Default.Username = user.UserName; Properties.Settings.Default.Password = user.Password; Properties.Settings.Default.AccessToken = response.access_token; Properties.Settings.Default.ExpiresIn = DateTime.Now.AddSeconds(response.expires_in - 60); Properties.Settings.Default.UserId = int.Parse(response.userId); Properties.Settings.Default.FullName = $"{response.firstName} {response.lastName}"; Properties.Settings.Default.Save(); success?.Invoke(response); } catch (FlurlHttpTimeoutException ex) { throw new Exception(API.GenericTimeoutErrorMessage, ex); } catch (FlurlHttpException ex) { error?.Invoke(ex); } catch (Exception ex) { throw new Exception(API.GenericWeirdErrorMessage, ex); } }
public async Task <ActionResult> AddRootUser([FromBody] AccountBindingModel model) { if (ModelState.IsValid) { var checkOrg = await _uow.OrganisationAccount.FindOneAsync(o => o.Name == model.Name); if (checkOrg != null) { return(BadRequest("Organisation Account already exists")); } var orgAccount = new OrganisationAccount() { Name = model.Name, Region = model.Region, Data = model.Data, AddedBy = model.AddedBy, AddedDate = DateTime.UtcNow }; var resultOrg = _uow.OrganisationAccount.Add(orgAccount); var user = new ApplicationUser { UserName = model.User.Email, Email = model.User.Email, Civility = model.User.Civility, FirstName = model.User.FirstName, LastName = model.User.LastName, IsActive = model.User.IsActive, OrganisationId = resultOrg.Id, IsPasswordTemporary = model.User.IsPasswordTemporary, DateAdded = DateTime.UtcNow, DateModified = DateTime.UtcNow }; var result = await _userManager.CreateAsync(user, model.User.Password); var addedUser = await _userManager.FindByEmailAsync(user.Email); var roleTester = await _userManager.IsInRoleAsync(addedUser, model.User.UserRole); if (!await _userManager.IsInRoleAsync(addedUser, model.User.UserRole)) { result = await _userManager.AddToRoleAsync(addedUser, model.User.UserRole); } if (result.Succeeded) { //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); //var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme); //await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl); } return(Ok(addedUser)); } return(BadRequest()); }
public async Task <IActionResult> AddRootUser() { var accessToken = await HttpContext.GetTokenAsync("access_token"); var client = new HttpClient(); client.SetBearerToken(accessToken); var userId = GetClaimValue("sub"); var userData = new UserBindingModel { Email = "*****@*****.**", Password = "******", ConfirmPassword = "******", Civility = "Mr", FirstName = "Admin", LastName = "Austin Hospital", IsActive = true, ApprovedBy = "7c976a5f-16b9-4bc8-8688-040aa13cb46d", IsPasswordTemporary = true, UserRole = "root_user" }; var accountData = new AccountBindingModel { Name = "Austin Hospital", Region = "AU", Data = "", AddedBy = userId, User = userData }; var json = JsonConvert.SerializeObject(accountData, Formatting.Indented); var buffer = System.Text.Encoding.UTF8.GetBytes(json); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var response = client.PostAsync("http://localhost:5000/api/Account/AddRootUser", byteContent).Result; var result = await response.Content.ReadAsStringAsync(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { ViewBag.Json = JsonConvert.SerializeObject(result, Formatting.Indented);; return(View("json")); } return(RedirectToAction("Error", "Home")); }
/// <summary> /// Register at the server, will log in when done /// </summary> /// <param name="user"> the user to register</param> /// <param name="error">error callback</param> /// <param name="success">success callback</param> /// <returns></returns> public static async Task Register(AccountBindingModel user, Action <FlurlHttpException> error = null, Action <dynamic> success = null) { try { var response = await API.Register.PostJsonAsync(user).ReceiveJson(); success?.Invoke(response); } catch (FlurlHttpTimeoutException ex) { throw new Exception(API.GenericTimeoutErrorMessage, ex); } catch (FlurlHttpException ex) { error?.Invoke(ex); } catch (Exception ex) { throw new Exception(API.GenericWeirdErrorMessage, ex); } }