Пример #1
0
        public async Task <IActionResult> Register([FromBody] AdminRegistrationViewModel registerVM)
        {
            try
            {
                if (await _repo.UserExists(registerVM.Username))
                {
                    ModelState.AddModelError("Username", "Username is already exists.");
                }

                if (!ModelState.IsValid)
                {
                    return(Json(BadRequest(ModelState)));
                }
                registerVM.Username = registerVM.Username.ToLower();
                registerVM.Email    = registerVM.Email.ToLower();

                var adminToCreate = new Admin
                {
                    Username = registerVM.Username,
                    Email    = registerVM.Email
                };

                await _repo.Register(adminToCreate, registerVM.Password);

                return(Json(StatusCode(201)));
            }
            catch (Exception ex)
            {
                return(Json(BadRequest(ex)));
            }
        }
Пример #2
0
        private async Task <AdminRegistrationViewModel> GetModelData(AdminRegistrationViewModel model)
        {
            var competentAuthorities = EnumHelper.GetValues(typeof(UKCompetentAuthority))
                                       .Select(p => new SelectListItem()
            {
                Text = p.Value, Value = p.Key.ToString()
            });

            model.CompetentAuthorities = new SelectList(competentAuthorities, "Value", "Text");

            string token = User.GetAccessToken();

            if (string.IsNullOrWhiteSpace(token))
            {
                var tokenResponse = await oauthClientCredentialClient().GetClientCredentialsAsync();

                token = tokenResponse.AccessToken;
            }

            var result = await client.SendAsync(token, new GetLocalAreas());

            model.Areas = new SelectList(result.Select(area => new SelectListItem {
                Text = area.Name, Value = area.Id.ToString()
            }), "Value", "Text");

            return(model);
        }
Пример #3
0
        public async Task <ActionResult> CreateAdmin(AdminRegistrationViewModel model)
        {
            if (ModelState.IsValid)
            {
                var _firstname   = model.FirstName;
                var _lastname    = model.LastName;
                var _password    = model.Password;
                var _email       = model.Email;
                var _confmessage = "Now the Admin will have to confirm their email and they will offically be admins.";



                var user = new ApplicationUser
                {
                    UserName = _email,
                    Email    = _email
                };

                var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

                var result = await UserManager.CreateAsync(user, _password);

                if (result.Succeeded)
                {
                    //string callbackUrl = await SendEmailConfirmationTokenAsync(user.Id, _confmessage, _firstname);

                    var special_user = new BTTUser
                    {
                        FirstName        = _firstname,
                        LastName         = _lastname,
                        ASPNetIdentityID = user.Id
                    };

                    BeyondTheTutorContext db = new BeyondTheTutorContext();


                    var sub_user = new Admin();
                    sub_user.BTTUser = special_user;
                    db.BTTUsers.Add(special_user);
                    db.Admins.Add(sub_user);
                    UserManager.AddToRole(user.Id, "Admin");

                    await db.SaveChangesAsync();

                    TempData["created"] = "You have successfully created an admin. They will have to confirm their email to access administrator privilages.";

                    return(RedirectToAction("Index", "AllUsers"));
                }

                TempData["error"] = "Adding admin failed. Please check with the database administrator for further help!";
                AddErrors(result);
                return(View(model));
            }
            // If we got this far, something failed, redisplay form
            TempData["error"] = "Something went wrong! please check if you did everything correctly.";
            return(View(model));
        }
        private async Task<AdminRegistrationViewModel> GetModelData(AdminRegistrationViewModel model)
        {
            var competentAuthorities = EnumHelper.GetValues(typeof(UKCompetentAuthority))
                .Select(p => new SelectListItem() { Text = p.Value, Value = p.Key.ToString() });

            model.CompetentAuthorities = new SelectList(competentAuthorities, "Value", "Text");
            
            var result = await client.SendAsync(User.GetAccessToken(), new GetLocalAreas());
            model.Areas = new SelectList(result.Select(area => new SelectListItem { Text = area.Name, Value = area.Id.ToString() }), "Value", "Text");
            
            return model;
        }
Пример #5
0
        public async Task <ActionResult> Register(AdminRegistrationViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(await GetModelData(model)));
            }

            var adminRegistrationData = new AdminRegistrationData
            {
                Email           = model.Email,
                FirstName       = model.Name,
                Surname         = model.Surname,
                Password        = model.Password,
                ConfirmPassword = model.ConfirmPassword
            };

            try
            {
                var response = await oauthClientCredentialClient().GetClientCredentialsAsync();

                var userId = await client.Registration.RegisterAdminAsync(response.AccessToken, adminRegistrationData);

                var signInResponse = await oauthClient().GetAccessTokenAsync(model.Email, model.Password);

                authenticationManager.SignIn(signInResponse.GenerateUserIdentity());

                var emailSent = await
                                client.Registration.SendEmailVerificationAsync(signInResponse.AccessToken,
                                                                               new EmailVerificationData
                {
                    Url = Url.Action("AdminVerifyEmail", "Registration", null, Request.Url.Scheme)
                });

                await
                client.SendAsync(signInResponse.AccessToken,
                                 new CreateInternalUser(userId, model.JobTitle, model.LocalAreaId.GetValueOrDefault(), model.CompetentAuthority.GetValueOrDefault()));

                return(RedirectToAction("AdminEmailVerificationRequired"));
            }
            catch (ApiBadRequestException ex)
            {
                this.HandleBadRequest(ex);

                if (ModelState.IsValid)
                {
                    throw;
                }
            }

            return(View(await GetModelData(model)));
        }
        public async Task<ActionResult> Register(AdminRegistrationViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return View(await GetModelData(model));
            }

            var adminRegistrationData = new AdminRegistrationData
            {
                Email = model.Email,
                FirstName = model.Name,
                Surname = model.Surname,
                Password = model.Password,
                ConfirmPassword = model.ConfirmPassword
            };

            try
            {
                var userId = await client.Registration.RegisterAdminAsync(adminRegistrationData);
                var signInResponse = await oauthClient().GetAccessTokenAsync(model.Email, model.Password);
                authenticationManager.SignIn(signInResponse.GenerateUserIdentity());

                var emailSent = await
                    client.Registration.SendEmailVerificationAsync(signInResponse.AccessToken,
                        new EmailVerificationData
                        {
                            Url = Url.Action("AdminVerifyEmail", "Registration", null, Request.Url.Scheme)
                        });

                await
                    client.SendAsync(signInResponse.AccessToken,
                        new CreateInternalUser(userId, model.JobTitle, model.LocalAreaId.GetValueOrDefault(), model.CompetentAuthority.GetValueOrDefault()));

                return RedirectToAction("AdminEmailVerificationRequired");
            }
            catch (ApiBadRequestException ex)
            {
                this.HandleBadRequest(ex);

                if (ModelState.IsValid)
                {
                    throw;
                }
            }

            return View(await GetModelData(model));
        }
Пример #7
0
        public async Task <ActionResult> RegisterAdmin(AdminRegistrationViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    var currentUser = UserManager.FindByName(user.UserName);

                    var roleresult = UserManager.AddToRole(currentUser.Id, "Admin");

                    return(RedirectToAction("CreateAdminSuccess", "Account"));
                }
            }
            // If we got this far, something failed
            return(RedirectToAction("CreateAdminFail", "Account"));
        }
        private static AdminRegistrationViewModel GetValidRegisterViewModel()
        {
            const string ValidEmail            = "*****@*****.**";
            const string ValidPassword         = "******";
            const string ValidName             = "ValidName";
            const string ValidSurname          = "ValidSurname";
            const UKCompetentAuthority ValidCA = UKCompetentAuthority.England;
            const string ValidJobTitle         = "Title";
            Guid         validLocalAreaId      = new Guid("BA16D091-6C2A-410A-84CE-8689D2CE2EFF");

            var validRegisterViewModel = new AdminRegistrationViewModel
            {
                Email              = ValidEmail,
                Password           = ValidPassword,
                ConfirmPassword    = ValidPassword,
                Name               = ValidName,
                Surname            = ValidSurname,
                CompetentAuthority = ValidCA,
                JobTitle           = ValidJobTitle,
                LocalAreaId        = validLocalAreaId
            };

            return(validRegisterViewModel);
        }
        private static AdminRegistrationViewModel GetValidRegisterViewModel()
        {
            const string ValidEmail = "*****@*****.**";
            const string ValidPassword = "******";
            const string ValidName = "ValidName";
            const string ValidSurname = "ValidSurname";
            const UKCompetentAuthority ValidCA = UKCompetentAuthority.England;
            const string ValidJobTitle = "Title";
            Guid validLocalAreaId = new Guid("BA16D091-6C2A-410A-84CE-8689D2CE2EFF");

            var validRegisterViewModel = new AdminRegistrationViewModel
            {
                Email = ValidEmail,
                Password = ValidPassword,
                ConfirmPassword = ValidPassword,
                Name = ValidName,
                Surname = ValidSurname,
                CompetentAuthority = ValidCA,
                JobTitle = ValidJobTitle,
                LocalAreaId = validLocalAreaId
            };

            return validRegisterViewModel;
        }