Пример #1
0
        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)));
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        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());
        }
Пример #4
0
        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"));
        }
Пример #5
0
        /// <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);
            }
        }