public async Task <ActionResult> AcceptInvitation(AcceptInvitationViewModel invitationvm)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    FirstName   = invitationvm.FirstName,
                    LastName    = invitationvm.LastName,
                    DisplayName = invitationvm.FirstName + " " + invitationvm.LastName,
                    UserName    = invitationvm.Email,
                    Email       = invitationvm.Email,
                    AvatarPath  = "/Avatar/avatarPlaceholder.png",
                    HouseholdId = invitationvm.HouseholdId
                };

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

                if (result.Succeeded)
                {
                    //InvitationHelper.MarkAsIvnalid(invitationvm.Id);

                    roleHelper.AddUserToRole(user.Id, "Member");

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }
            return(View(invitationvm));
        }
Esempio n. 2
0
        public IHttpActionResult AcceptInvitation(AcceptInvitationViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var group = this.groupService.GetGroup(viewModel.GroupName);

            if (group == null)
            {
                return(BadRequest("No such group"));
            }

            var currentUserId = User.Identity.GetUserId();
            var username      = User.Identity.GetUserName();

            var acceptedInvitation = this.groupService.AcceptInvitation(currentUserId, group.GroupId);

            if (!acceptedInvitation)
            {
                string message = $"No invitation for user '{username}' in group '{group.Name}'";
                return(this.Content(HttpStatusCode.Forbidden, message));
            }

            var result = new AcceptInvitationResultModel
            {
                GroupId   = group.GroupId,
                GroupName = group.Name,
                Username  = username,
            };

            return(Created("", result)); // TODO: url
        }
Esempio n. 3
0
        public async Task <ActionResult> AcceptInvitation(AcceptInvitationViewModel invitationvm)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    FirstName   = invitationvm.RegisterVM.FirstName,
                    LastName    = invitationvm.RegisterVM.LastName,
                    DisplayName = invitationvm.RegisterVM.DisplayName,
                    UserName    = invitationvm.RegisterVM.Email,
                    Email       = invitationvm.RegisterVM.Email,
                    AvatarPath  = "/Avatars/default_user.png",
                    HouseholdId = invitationvm.HouseholdId
                };

                var result = await UserManager.CreateAsync(user, invitationvm.RegisterVM.Password);

                if (result.Succeeded)
                {
                    //var sentInvitation = db.Invitations.Find(invitationvm.Id);
                    //sentInvitation.IsValid = false;

                    roleHelper.AddUserToRole(user.Id, "Member");

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    db.SaveChanges();
                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }
            return(View());
        }
        //
        // Accept Invitation
        public ActionResult AcceptInvitation(string recipientEmail, string code)
        {
            var realGuid   = Guid.Parse(code);
            var invitation = db.Invitations.FirstOrDefault(i => i.RecipientEmail == recipientEmail && i.Code == realGuid);

            if (invitation == null)
            {
                return(View("NotFoundError", invitation));
            }

            var expirationDate = invitation.Created.AddDays(invitation.TTL);

            if (invitation.IsValid)
            {
                var houseHoldName = db.Households.Find(invitation.HouseholdId).Name;
                ViewBag.Greeting = $"<center>Thank You for accepting my invitation to join {houseHoldName}.</center><br />";

                var invitationVm = new AcceptInvitationViewModel
                {
                    Id          = invitation.Id,
                    Email       = recipientEmail,
                    Code        = realGuid,
                    HouseholdId = invitation.HouseholdId
                };

                return(View(invitationVm));
            }

            return(View("AcceptError", invitation));
        }
        // GET: Households/Join
        public ActionResult Join(string recipientEmail, string code)
        {
            var realGuid   = Guid.Parse(code);
            var invitation = db.Invitations.FirstOrDefault(i => i.RecipientEmail == recipientEmail && i.Code == realGuid);

            if (invitation == null)
            {
                TempData["Warning"] = "No Invitation Found."; return(RedirectToAction("Index", "Home"));
            }
            var expirationDate = invitation.Created.AddDays(invitation.TTL);

            if (invitation.IsValid && DateTime.Now < expirationDate)
            {
                var invitationVM = new AcceptInvitationViewModel
                {
                    Id          = invitation.Id,
                    Email       = recipientEmail,
                    Code        = realGuid,
                    HouseholdId = invitation.HouseholdId
                };
                return(View(invitationVM));
            }
            else
            {
                TempData["Warning"] = "This invitation expired or is no longer valid.";
                return(RedirectToAction("Index", "Home"));
            }
        }
Esempio n. 6
0
        public async Task <ActionResult> AcceptInvitation(AcceptInvitationViewModel invitationVm)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    FirstName   = invitationVm.FirstName,
                    LastName    = invitationVm.LastName,
                    DisplayName = invitationVm.DisplayName,
                    Email       = invitationVm.Email,
                    UserName    = invitationVm.Email,
                    HouseholdId = invitationVm.HouseholdId,
                    AvatarPath  = "/Images/default.jpg"
                };

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

                if (result.Succeeded)
                {
                    var sentInvitation = db.Invitations.Find(invitationVm.Id);
                    sentInvitation.IsValid = false;
                    db.SaveChanges();

                    roleHelper.AddUserToRole(user.Id, "Member");
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    return(RedirectToAction("Dashboard", "Households"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(invitationVm));
        }
Esempio n. 7
0
        public ActionResult AcceptInvitation(string receipentEmail, string code)
        {
            var realGuid   = Guid.Parse(code);
            var invitation = db.Invitations.FirstOrDefault(i => i.ReceipentEmail == receipentEmail && i.Code == realGuid);

            if (invitation == null)
            {
                return(View("NotFoundError", invitation));
            }
            var expirationDate = invitation.Created.AddDays(invitation.TTL);

            if (invitation.IsValid && DateTime.Now < expirationDate)
            {
                var housholdName = db.Households.Find(invitation.HouseholdId).Name;
                ViewBag.Greeting = $"Thankyou for accepting inviatation to join {housholdName}";
                var invitationVm = new AcceptInvitationViewModel
                {
                    Id          = invitation.Id,
                    Email       = receipentEmail,
                    Code        = realGuid,
                    HouseholdId = invitation.HouseholdId
                };
                return(View(invitationVm));
            }
            //return RedirectToAction("InvitationExpired");
            ViewBag.Error = "Your invitation expired. Please request another invitation to this house.";
            return(View("InvitationExpired", invitation));
        }
Esempio n. 8
0
        public async Task <ActionResult> AcceptInvitation(AcceptInvitationViewModel invitationvm)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    FirstName   = invitationvm.FirstName,
                    LastName    = invitationvm.LastName,
                    UserName    = invitationvm.Email,
                    Email       = invitationvm.Email,
                    AvatarPath  = "/Avatars/default_user.png",
                    HouseholdId = invitationvm.HouseholdId
                };

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

                if (result.Succeeded)
                {
                    InvitationHelper.MarkAsInvalid(invitationvm.Id);

                    roleHelper.AddUserToRole(user.Id, "Member");

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    return(RedirectToAction("Dashboard", "Home"));
                }
                AddErrors(result);
            }
            // If we got this far, something failed, redisplay form
            return(View(invitationvm));
        }
        public async Task <ActionResult> AcceptInvitation(AcceptInvitationViewModel invitationvm)
        {
            if (ModelState.IsValid)
            {
                UserRolesHelper helper = new UserRolesHelper();
                var             user   = new ApplicationUser
                {
                    FirstName   = invitationvm.FirstName,
                    LastName    = invitationvm.LastName,
                    UserName    = invitationvm.Email,
                    Email       = invitationvm.Email,
                    HouseholdId = invitationvm.HouseholdId
                };

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

                if (result.Succeeded)
                {
                    InvitationExtensions.MarkAsInvalid(invitationvm.Id);
                    helper.RemoveUserFromRole(user.Id, "Guest");
                    helper.AddUserToRole(user.Id, "Household Member");

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }
            return(View(invitationvm));
        }
        public AcceptInvitationPage(AuthenticationResult result)
        {
            InitializeComponent();

            BindingContext = _vm =
                new AcceptInvitationViewModel(result.UserClaims.Single(claim => claim.Type == "email").Value)
            {
                Navigation = Navigation
            };
        }
Esempio n. 11
0
        public async Task <ActionResult> AcceptInvitation(AcceptInvitationViewModel invitationvm, HttpPostedFileBase avatar)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    FirstName   = invitationvm.FirstName,
                    LastName    = invitationvm.LastName,
                    DisplayName = invitationvm.DisplayName,
                    UserName    = invitationvm.Email,
                    Email       = invitationvm.Email,
                    AvatarPath  = "/Avatars/default_user.png",
                    HouseholdId = invitationvm.HouseholdId
                };

                if (avatar != null)
                {
                    if (ImageUploadValidator.IsWebFriendlyImage(avatar))
                    {
                        var fileName     = Path.GetFileName(avatar.FileName);
                        var justFileName = Path.GetFileNameWithoutExtension(fileName);
                        justFileName = StringUtilities.URLFriendly(justFileName);
                        fileName     = $"{justFileName}_{DateTime.Now.Ticks}{Path.GetExtension(fileName)}";
                        avatar.SaveAs(Path.Combine(Server.MapPath("~/Avatars/"), fileName));
                        user.AvatarPath = "/Avatars/" + fileName;
                    }
                }

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

                if (result.Succeeded)
                {
                    InvitationHelper.MarkAsInvalid(invitationvm.Id);

                    roleHelper.AddUserToRole(user.Id, "Member");

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

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

                AddErrors(result);
            }

            //If we got this far, something failed, redisplay form
            return(View(invitationvm));
        }
Esempio n. 12
0
        public async Task <IActionResult> OnGet(string id)
        {
            ViewData["Message"] = String.Empty;

            try
            {
                using (var httpClient = new System.Net.Http.HttpClient())
                {
                    //var invitation = await _mediator.Send(new GetInvitationByIdQuery { Id = id });

                    httpClient.DefaultRequestHeaders.Add(_applicationSettings.IdentityService.ApiKeyName, _applicationSettings.IdentityService.ApiKeyValue);

                    var invitationClient = new Services.IdentityService.InvitationsClient(_applicationSettings.IdentityService.ApiUrl, httpClient);
                    var invitation       = await invitationClient.IdAsync(id);

                    if (invitation != null && invitation.Id == id)
                    {
                        AcceptInvitation = new AcceptInvitationViewModel
                        {
                            InvitationExists  = true,
                            InvitationId      = invitation.Id,
                            InvitationExpired = invitation.IsExpired.Value
                        };
                    }
                    else
                    {
                        AcceptInvitation = new AcceptInvitationViewModel
                        {
                            InvitationExists = false
                        };
                    }
                }
            }
            catch
            {
                AcceptInvitation = new AcceptInvitationViewModel
                {
                    InvitationExists = false
                };
            }

            return(Page());
        }
        public async Task <ActionResult> Register(AcceptInvitationViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    Email      = model.Email,
                    UserName   = model.Email,
                    LastName   = model.LastName,
                    FirstName  = model.FirstName,
                    AvatarPath = model.AvatarPath
                };
                if (model.HouseholdId != 0)
                {
                    user.HouseholdId = model.HouseholdId;
                }
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    if (model.HouseholdId != 0)
                    {
                        roleHelp.AddUserToRole(user.Id, "Member");
                        // fire the DidTheyJoin Notification method
                        var invitation = db.Invitations.Find(model.Id);
                        notifyHelp.DidTheyJoinUp(invitation);
                        inviteHelp.MarkAsInvalid(model.Id);
                    }
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code }, protocol: Request.Url.Scheme);
                    await EmailHelper.ComposeEmailAsync(model, callbackUrl);

                    return(RedirectToAction("NewlyRegistered"));
                }
                AddErrors(result);
                TempData["Errors"] = ErrorReader.ErrorCompiler(ModelState);
            }
            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Esempio n. 14
0
        public ActionResult AcceptInvitation(string recipientEmail, string code, int Id)
        {
            //var checkemail = db.Users.Where(u => u.Email == recipientEmail);


            var realGuid       = Guid.Parse(code);
            var invitation     = db.Invitations.FirstOrDefault(i => i.RecipientEmail == recipientEmail && i.Code == realGuid);
            var expirationDate = invitation.Created.AddDays(invitation.TTL);

            ////if (checkemail != null)
            ////{
            ////    InvitationHelper.MarkAsInvalid(Id);
            ////    return RedirectToAction("Index", "Home");
            ////}

            if (invitation == null)
            {
                return(View("NotFoundError", invitation));
            }



            if (invitation.IsValid && DateTime.Now < expirationDate)
            {
                var houseHoldName = db.Households.Find(invitation.HouseholdId).Name;
                ViewBag.Greeting = $"<center>Thank you for accepting my invitation to join {houseHoldName}.</center>";

                var invitationVm = new AcceptInvitationViewModel
                {
                    Id          = invitation.Id,
                    Email       = recipientEmail,
                    Code        = realGuid,
                    HouseholdId = invitation.HouseholdId
                };

                return(View(invitationVm));
            }

            return(View());
            //return View("AcceptError", invitation);
        }
        public ActionResult Register(string recipientEmail, Guid?code, int?houseId, int?Id)
        {
            AcceptInvitationViewModel model = new AcceptInvitationViewModel();
            var invitation = db.Invitations.FirstOrDefault(i => i.RecipientEmail == recipientEmail && i.Code == code);

            if (invitation != null)
            {
                var expirationDate = invitation.Created.AddDays(invitation.TTL);
                if (invitation.IsValid && DateTime.Now < expirationDate)
                {
                    model.Code        = (Guid)code;
                    model.HouseholdId = (int)houseId;
                    model.Email       = recipientEmail;
                    model.Id          = (int)Id;
                    ViewBag.HasCode   = true;
                }
            }
            else
            {
                ViewBag.HasCode = false;
            }
            model.AvatarPath = "/Images/default.png";
            return(View(model));
        }