Beispiel #1
0
        private async Task <bool> RegisterUser(ApplicationUser User, AdminRegistrationBase AdminBase)
        {
            if (AdminBase.Role != Roles.AppAdmin)
            {
                var Invite = await db.Invites.Include("Organization").SingleOrDefaultAsync(x => x.Password == AdminBase.ConfirmationCode);

                if (Invite == null)
                {
                    throw "Unable to retrieve the information of the specified invite. Please try again.".asException();
                }

                if (Invite.Organization == null)
                {
                    throw "Unable to retrieve the information of the specified organization. Please try again.".asException();
                }

                db.Administrators.Add(new Administrator
                {
                    User         = User,
                    Organization = Invite.Organization,
                    Role         = AdminBase.Role
                });

                db.Invites.Remove(Invite);
            }

            return(true);
        }
Beispiel #2
0
        public async Task <ActionResult> Init([Bind(Include = "StepCode, ResendActivity, Email")] GetEmailConfirmViewModel GetEmail)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var Step = await db.InitStep.FindAsync(GetEmail.StepCode);

                    if (Step != null)
                    {
                        var ConfirmationCode = Extensions.GetUniqueKey(7, Numeric: true);

                        if (GetEmail.ResendActivity)
                        {
                            var AdminBase = await db.AdminBase.FindAsync(GetEmail.StepCode);

                            AdminBase.Email            = GetEmail.Email;
                            AdminBase.ConfirmationCode = ConfirmationCode;

                            db.Entry(AdminBase).State = EntityState.Modified;

                            TempData.SetSuccess("New confirmation code has been sent.");
                        }
                        else
                        {
                            Step.Auth++;

                            var AdminBase = new AdminRegistrationBase()
                            {
                                Email            = GetEmail.Email,
                                ConfirmationCode = ConfirmationCode,
                                ResendActivity   = true,
                                Step             = Step,
                                Role             = Roles.AppAdmin
                            };

                            db.Entry(AdminBase.Step).State = EntityState.Modified;
                            db.AdminBase.Add(AdminBase);
                        }

                        await db.SaveChangesAsync();

                        BackgroundJob.Enqueue(() => PostalMail.SendAdminConfrimationCode(GetEmail.Email, ConfirmationCode));

                        return(RedirectToAction("Init"));
                    }
                    else
                    {
                        throw "Step Initialization failed in sequence. Contact your vendor for more information.".asException();
                    }
                }
                else
                {
                    throw "Submitted form is not valid. Please try again.".asException();
                }
            }
            catch (Exception ex)
            {
                TempData.SetError(ex.Message);
            }

            SetInfo();
            return(View(new InitViewModel()
            {
                GetEmail = GetEmail,
            }));
        }
        public async Task <ActionResult> Verify(string id)
        {
            try
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                var Invite = await db.Invites.SingleOrDefaultAsync(x => x.Password == id);

                if (Invite == null)
                {
                    return(HttpNotFound());
                }

                var InitStep = await db.InitStep.FindAsync(id);

                if (InitStep == null)
                {
                    InitStep = new IntilizationStep
                    {
                        Auth = 3,
                        Code = id,
                        Mode = Invite.Username,
                    };

                    var AdminBase = new AdminRegistrationBase()
                    {
                        Email            = Invite.Email,
                        ConfirmationCode = id,
                        ResendActivity   = true,
                        StepCode         = InitStep.Code,
                        Step             = InitStep,
                        Role             = Invite.Role
                    };

                    using (var Transaction = db.Database.BeginTransaction(IsolationLevel.ReadCommitted))
                    {
                        try
                        {
                            db.InitStep.Add(InitStep);
                            db.AdminBase.Add(AdminBase);

                            await db.SaveChangesAsync();

                            Transaction.Commit();
                        }
                        catch (Exception)
                        {
                            Transaction.Rollback();
                            throw;
                        }
                    }
                }

                HttpContext.SetSecuredSessionCookie(AppSettings.GetValue("_SessionName"), InitStep.Code);
                return(RedirectToAction("Init", "App"));
            }
            catch (Exception)
            {
                throw;
            }
        }