Esempio n. 1
0
        public ActionResult Confirmation(RegistrationConfirmationViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    using (var scope = new UnitOfWorkScope())
                    {
                        User user = _repository.GetUserByUsername(model.UserName);
                        if (user.UserName != model.UserName || user.RegistrationCode != model.Code)
                        {
                            ModelState.AddModelError("UserName", "Невалидно корисничко име или код!");
                        }
                        else
                        {
                            user.IsActive = true;
                            _repository.Update(user);
                            scope.Commit();

                            CreateAuthTicket(user, true);
                            return(Json(true));
                        }
                    }
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError(string.Empty, "Во моментов системот има технички проблеми.<br/>Обидете се повторно за некоја минута");
                    Log.Error(ex);
                }
            }
            throw base.CreateModelException(model);
        }
 public override void Given()
 {
     RegistrationConfirmationViewModel = new RegistrationConfirmationViewModel {
         UniqueLearnerNumber = "987654321"
     };
     CacheService.GetAndRemoveAsync <RegistrationConfirmationViewModel>(Arg.Any <string>()).Returns(RegistrationConfirmationViewModel);
 }
        GetRegistrationConfirmation()
        {
            var model  = new RegistrationConfirmationViewModel();
            var code   = StateContext.Data[CodeKey] as string;
            var userId = StateContext.Data[UserIdKey] as string;

            model.IsRegistration =
                StateContext.Data[IsValidationReminderKey] as bool? ?? false;

            if ((code == null) || (userId == null))
            {
                return(model);
            }

            // DEMO-ONLY
            model.IsDemo           = true;
            model.ConfirmationLink = GetEmailVerificationRedirectUrl(code, userId);

            return(model);
        }
Esempio n. 4
0
        public async Task <IActionResult> RegistrationConfirmation(string userId, string code)
        {
            var model = new RegistrationConfirmationViewModel();

            if (userId == null || code == null)
            {
                return(RedirectToAction(
                           actionName: "Login",
                           controllerName: "Authentication"
                           ));
            }

            var user = await _userManager.FindByIdAsync(userId);

            if (user == null)
            {
                return(NotFound($"Unable to load user with ID '{userId}'."));
            }

            var result = await _userManager.ConfirmEmailAsync(user, code);

            if (!result.Succeeded)
            {
                //throw new InvalidOperationException($"Error confirming email for user with ID '{userId}':");
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
                model.ShowInvalid = true;
            }
            else
            {
                //Login User
                await _signInManager.SignInAsync(user : user, isPersistent : false);
            }

            return(View(model));
        }
Esempio n. 5
0
        public async Task <ActionResult> Register(RegisterUserViewModel submitedModel)
        {
            if (submitedModel.Username != null)
            {
                if (!submitedModel.Username.ToLower().Contains("sdbs"))
                {
                    ModelState.AddModelError("", "Registrace je umožněna prozatím pouze členům SDBS");
                    return(View(submitedModel));
                }
            }

            ViewBag.Title = GeneralResources.Registration;
            bool success      = false;
            bool unknownError = false;

            ApplicationUser user = null;

            if (ModelState.IsValid)
            {
                using (ApplicationDbContext context = new ApplicationDbContext())
                {
                    Org registeringOrg = null;

                    #region Get org (invitation/registration)
                    if (submitedModel.IsInvited)
                    {
                        var invitation = from inv in context.Invitations
                                         where inv.Code == submitedModel.InvitationCode
                                         select inv;
                        if (invitation.Count() != 1 || invitation.FirstOrDefault().Accepted)
                        {
                            unknownError = true;
                        }
                        else
                        {
                            submitedModel.Email = invitation.FirstOrDefault().Email;
                            registeringOrg      = invitation.FirstOrDefault().Org;
                            invitation.FirstOrDefault().Accepted = true;
                        }
                    }
                    else
                    {
                        unknownError = true;
                        var cookie = Request.Cookies["RegisteringOrgID"];

                        if (cookie != null)
                        {
                            int registeringOrgID;
                            if (int.TryParse(cookie.Value, out registeringOrgID))
                            {
                                var registeringOrgQuerry = from org in context.Orgs
                                                           where org.OrgID == registeringOrgID
                                                           select org;
                                if (registeringOrgQuerry.Count() == 1)
                                {
                                    registeringOrg = registeringOrgQuerry.FirstOrDefault();
                                    unknownError   = false;
                                }
                            }
                        }
                    }
                    #endregion

                    //Existing Org
                    if (!unknownError)
                    {
                        #region User name and email unique validation
                        {
                            bool modelStateError = false;

                            var existingUserEmail = from usr in context.Users
                                                    where usr.Email == submitedModel.Email.Trim()
                                                    select usr;

                            if (existingUserEmail.Any())
                            {
                                modelStateError = true;
                                ModelState.AddModelError("Email", AccountResources.AlreadyExistsEmailError);
                            }

                            var existingUserUsername = from usr in context.Users
                                                       where usr.UserName == submitedModel.Username.Trim()
                                                       select usr;

                            if (existingUserUsername.Any())
                            {
                                modelStateError = true;
                                ModelState.AddModelError("Username", AccountResources.AlreadyExistsUsernameError);
                            }

                            if (modelStateError)
                            {
                                return(View(submitedModel));
                            }
                        }
                        #endregion

                        //var appUsername = JosefinaIdentityManager.GetMUUsername(registeringOrgQuerry.FirstOrDefault().Name, submitedModel.Username.Trim());
                        user = new ApplicationUser();
                        if (submitedModel.IsInvited)
                        {
                            user.EmailConfirmed = true;
                        }
                        else
                        {
                            Random random = new Random();
                            int    emailConfirmationCode;
                            bool   isUnique = false;
                            do
                            {
                                emailConfirmationCode = random.Next(10000, 1000000000);

                                var duplicitUserConfirmation = from usr in context.Users
                                                               where usr.EmailConfirmationCode == emailConfirmationCode
                                                               select usr;
                                isUnique = !duplicitUserConfirmation.Any();
                            }while (!isUnique);
                            user.EmailConfirmationCode = emailConfirmationCode;
                            user.EmailConfirmed        = false;
                        }
                        user.Email    = submitedModel.Email.Trim().ToLower();
                        user.UserName = submitedModel.Username.Trim();
                        user.OrgID    = registeringOrg.OrgID;

                        IdentityResult result = await UserManager.CreateAsync(user, submitedModel.Password);

                        if (result.Succeeded && !string.IsNullOrEmpty(user.Id))
                        {
                            success = true;
                            context.SaveChanges();
                        }
                        else
                        {
                            unknownError = true;
                        }
                    }
                    else
                    {
                        unknownError = true;
                    }
                }

                if (success)
                {
                    IUserMailer userMailer        = new UserMailer();
                    var         confirmationModel = new RegistrationConfirmationViewModel();

                    if (!submitedModel.IsInvited)
                    {
                        var email = userMailer.EmailConfirmation(user.EmailConfirmationCode, user.Email);
                        email.SendAsync();
                        confirmationModel.ConfirmationOrg     = AccountResources.DialogSuccesfullyRegisteredOrgBody;
                        confirmationModel.ConfirmationMessage = AccountResources.DialogSuccesfullStartMessage;
                    }
                    else
                    {
                        confirmationModel.ConfirmationMessage = AccountResources.DialogSuccesfullStartMessageInvitation;
                    }

                    confirmationModel.ConfirmationUser = AccountResources.DialogSuccesfullyRegisteredUser;
                    confirmationModel.Header           = AccountResources.DialogSuccesfullRegistration;
                    confirmationModel.IsOrgRegistered  = !submitedModel.IsInvited;
                    ViewBag.Body = AccountResources.DialogSuccesfullRegistration;
                    return(View("RegistrationConfirmation", confirmationModel));

                    //return RedirectToAction("Home", "OrgController");
                }
                else if (unknownError)
                {
                    return(View("~/Views/Shared/Error.cshtml"));
                }
                else
                {
                    // If we got this far, something failed, redisplay form
                    return(View(submitedModel));
                }
            }
            return(View(submitedModel));
        }
        public RegistrationConfirmationViewModel GetRegistrationConfirmation()
        {
            var model = new RegistrationConfirmationViewModel();
             var code = StateContext.Data[CodeKey] as string;
             var userId = StateContext.Data[UserIdKey] as string;
             model.IsRegistration =
            StateContext.Data[IsValidationReminderKey] as bool? ?? false;

             if ((code == null) || (userId == null)) return model;

             // DEMO-ONLY
             model.IsDemo = true;
             model.ConfirmationLink = GetEmailVerificationRedirectUrl(code, userId);

             return model;
        }