public static TBEmailValidation GetTarget_EmailValidation(TBAccount owningAccount, TBCollaboratingGroup owningGroup, InformationInput informationInput, string[] ownerEmailAddresses) { TBEmailValidation emailValidation = new TBEmailValidation(); emailValidation.InformationInputConfirmation = new TBInformationInputConfirmation(); if (owningAccount != null && owningGroup != null) { throw new InvalidDataException("Both owning account and owning group cannot be defined"); } if (owningAccount == null && owningGroup == null) { throw new InvalidDataException("Both owning account and owning group must not be null"); } if (owningAccount != null) { emailValidation.InformationInputConfirmation.AccountID = owningAccount.ID; } if (owningGroup != null) { emailValidation.InformationInputConfirmation.GroupID = owningGroup.ID; } emailValidation.InformationInputConfirmation.InformationInputID = informationInput.ID; emailValidation.ValidUntil = DateTime.UtcNow.AddMinutes(30); emailValidation.Email = ownerEmailAddresses.FirstOrDefault(); if (emailValidation.Email == null) { throw new InvalidDataException("Owner must have at least one email address defined"); } return(emailValidation); }
private void HandleInputJoinConfirmation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { ValidateAccountsEmailAddress(account, emailValidation); VirtualOwner owner; var inputJoinInfo = emailValidation.InformationInputConfirmation; string redirectUrl; if (String.IsNullOrEmpty(inputJoinInfo.AccountID) == false) { owner = VirtualOwner.FigureOwner("acc/" + inputJoinInfo.AccountID); redirectUrl = "/auth/account/website/oip-account/oip-layout-account-welcome.phtml"; } else { string groupID = inputJoinInfo.GroupID; owner = VirtualOwner.FigureOwner("grp/" + groupID); redirectUrl = "/auth/grp/" + groupID + "/website/oip-group/oip-layout-groups-edit.phtml"; } SetInformationInputValidationAndActiveStatus.Execute( new SetInformationInputValidationAndActiveStatusParameters { Owner = owner, InformationInputID = inputJoinInfo.InformationInputID, IsValidAndActive = true }); context.Response.Redirect(redirectUrl, true); }
private void HandleAccountEmailValidation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { if (account.Emails.CollectionContent.Find(candidate => candidate.EmailAddress.ToLower() == emailValidation.Email.ToLower()) == null) { TBEmail email = TBEmail.CreateDefault(); email.EmailAddress = emailValidation.Email; email.ValidatedAt = DateTime.Now; account.Emails.CollectionContent.Add(email); account.StoreAccountToRoot(); // TODO: Move Emailroot storage to account root syncs string emailRootID = TBREmailRoot.GetIDFromEmailAddress(email.EmailAddress); TBREmailRoot emailRoot = TBREmailRoot.RetrieveFromDefaultLocation(emailRootID); if (emailRoot == null) { emailRoot = TBREmailRoot.CreateDefault(); emailRoot.ID = emailRootID; emailRoot.UpdateRelativeLocationFromID(); } emailRoot.Account = account; StorageSupport.StoreInformation(emailRoot); string accountID = account.ID; UpdateAccountRootToReferences.Execute(new UpdateAccountRootToReferencesParameters { AccountID = accountID }); UpdateAccountContainerFromAccountRoot.Execute(new UpdateAccountContainerFromAccountRootParameters { AccountID = accountID }); } context.Response.Redirect("/auth/account/website/oip-account/oip-layout-account-welcome.phtml", true); }
public static string[] GetTarget_OwnerEmailAddresses(TBAccount owningAccount, TBCollaboratingGroup owningGroup) { if (owningAccount != null) { return(owningAccount.Emails.CollectionContent.Select(email => email.EmailAddress).ToArray()); } return(owningGroup.Roles.CollectionContent.Where(role => TBCollaboratorRole.HasInitiatorRights(role.Role)) .Select(role => role.Email.EmailAddress).ToArray()); }
private static void ValidateAccountsEmailAddress(TBAccount account, TBEmailValidation emailValidation) { if ( account.Emails.CollectionContent.Exists( candidate => candidate.EmailAddress.ToLower() == emailValidation.Email.ToLower()) == false) { throw new SecurityException("Login account does not contain email address that was target of validation"); } }
private void HandleGroupJoinConfirmation(HttpContext context, TBAccount account, TBEmailValidation emailValidation) { ValidateAccountsEmailAddress(account, emailValidation); string groupID = emailValidation.GroupJoinConfirmation.GroupID; ConfirmInviteToJoinGroup.Execute(new ConfirmInviteToJoinGroupParameters { GroupID = groupID, MemberEmailAddress = emailValidation.Email }); context.Response.Redirect("/auth/grp/" + groupID + "/website/oip-group/oip-layout-groups-edit.phtml"); }
private void HandlePersonalRequest(HttpContext context) { string loginUrl = WebSupport.GetLoginUrl(context); TBRLoginRoot loginRoot = TBRLoginRoot.GetOrCreateLoginRootWithAccount(loginUrl, true); bool doDelete = false; if (doDelete) { loginRoot.DeleteInformationObject(); return; } TBAccount account = loginRoot.Account; string requestPath = context.Request.Path; string contentPath = requestPath.Substring(AuthPersonalPrefixLen); HandleOwnerRequest(account, context, contentPath, TBCollaboratorRole.CollaboratorRoleValue); }
public static void SetAllInvitedViewerMembersAsFullCollaborators() { var accountIDs = TBRAccountRoot.GetAllAccountIDs(); foreach (var acctID in accountIDs) { TBRAccountRoot accountRoot = TBRAccountRoot.RetrieveFromDefaultLocation(acctID); TBAccount account = accountRoot.Account; foreach (var grpRole in account.GroupRoleCollection.CollectionContent) { if (TBCollaboratorRole.IsRoleStatusValidMember(grpRole.RoleStatus) == false) { grpRole.RoleStatus = TBCollaboratorRole.RoleStatusMemberValue; } if (grpRole.GroupRole == TBCollaboratorRole.ViewerRoleValue) { grpRole.GroupRole = TBCollaboratorRole.CollaboratorRoleValue; } } account.StoreAccountToRoot(); } }
private void HandleEmailValidation(HttpContext context) { string loginUrl = WebSupport.GetLoginUrl(context); TBRLoginRoot loginRoot = TBRLoginRoot.GetOrCreateLoginRootWithAccount(loginUrl, false); string requestPath = context.Request.Path; string emailValidationID = requestPath.Substring(AuthEmailValidationLen); TBAccount account = loginRoot.Account; TBEmailValidation emailValidation = TBEmailValidation.RetrieveFromDefaultLocation(emailValidationID); if (emailValidation == null) { RespondEmailValidationRecordNotExist(context); return; } StorageSupport.DeleteInformationObject(emailValidation); if (emailValidation.ValidUntil < DateTime.UtcNow) { RespondEmailValidationExpired(context, emailValidation); return; } if (emailValidation.GroupJoinConfirmation != null) { HandleGroupJoinConfirmation(context, account, emailValidation); } else if (emailValidation.DeviceJoinConfirmation != null) { HandleDeviceJoinConfirmation(context, account, emailValidation); } else if (emailValidation.InformationInputConfirmation != null) { HandleInputJoinConfirmation(context, account, emailValidation); } else { HandleAccountEmailValidation(context, account, emailValidation); } }