示例#1
0
        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
                                                                  });
            }

            if(String.IsNullOrEmpty(emailValidation.RedirectUrlAfterValidation) == false)
                context.Response.Redirect(emailValidation.RedirectUrlAfterValidation, true);
        }
示例#2
0
        public bool PerformAddOperation(string commandName, InformationSourceCollection sources, string requesterLocation, HttpFileCollection files)
        {
            if (GroupName == "")
            {
                throw new InvalidDataException("Group name must be given");
            }
            //throw new NotImplementedException("Old implementation not converted to managed group structures");
            //AccountContainer container = (AccountContainer) sources.GetDefaultSource(typeof(AccountContainer).FullName).RetrieveInformationObject();
            VirtualOwner owner = VirtualOwner.FigureOwner(this);

            if (owner.ContainerName != "acc")
            {
                throw new NotSupportedException("Group creation only supported from account");
            }
            string         accountID   = owner.LocationPrefix;
            TBRAccountRoot accountRoot = TBRAccountRoot.RetrieveFromDefaultLocation(accountID);
            TBAccount      account     = accountRoot.Account;

            if (account.Emails.CollectionContent.Count == 0)
            {
                throw new InvalidDataException("Account needs to have at least one email address to create a group");
            }
            CreateGroup.Execute(new CreateGroupParameters {
                AccountID = accountID, GroupName = this.GroupName
            });
            this.GroupName = "";
            return(true);
        }
示例#3
0
 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");
 }
示例#4
0
        public static TBAccount GetAccountFromEmail(string emailAddress)
        {
            string       emailRootID = TBREmailRoot.GetIDFromEmailAddress(emailAddress);
            TBREmailRoot emailRoot   = TBREmailRoot.RetrieveFromDefaultLocation(emailRootID);
            TBAccount    account     = emailRoot.Account;

            return(account);
        }
 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();
 }
示例#6
0
        public static AccountContainer GetTarget_AccountContainer(TBRAccountRoot accountRoot)
        {
            TBAccount        account          = accountRoot.Account;
            AccountContainer accountContainer = AccountContainer.RetrieveFromOwnerContent(account, "default");

            if (accountContainer == null)
            {
                accountContainer = AccountContainer.CreateDefault();
                accountContainer.SetLocationAsOwnerContent(account, "default");
            }
            return(accountContainer);
        }
 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;
 }
示例#8
0
        public void JoinToGroup(string emailAddress, string joinAsRole)
        {
            if (this.Roles.CollectionContent.Find(member => member.Email.EmailAddress == emailAddress) != null)
            {
                return;
            }
            TBAccount account   = TBAccount.GetAccountFromEmail(emailAddress);
            TBEmail   email     = account.GetAccountEmail(emailAddress);
            var       groupRole = new TBCollaboratorRole()
            {
                Email      = email,
                Role       = joinAsRole,
                RoleStatus = TBCollaboratorRole.RoleStatusMemberValue,
            };

            //account.JoinGroup(this, groupRole);
            //account.StoreAndPropagate();
            this.Roles.CollectionContent.Add(groupRole);
        }
示例#9
0
 private void HandleOutputJoinConfirmation(HttpContext context, TBAccount account, TBEmailValidation emailValidation)
 {
     ValidateAccountsEmailAddress(account, emailValidation);
     VirtualOwner owner;
     var outputJoinInfo = emailValidation.InformationOutputConfirmation;
     string redirectUrl;
     if (String.IsNullOrEmpty(outputJoinInfo.AccountID) == false)
     {
         owner = VirtualOwner.FigureOwner("acc/" + outputJoinInfo.AccountID);
         redirectUrl = "/auth/account/";
     }
     else
     {
         string groupID = outputJoinInfo.GroupID;
         owner = VirtualOwner.FigureOwner("grp/" + groupID);
         redirectUrl = "/auth/grp/" + groupID + "/";
     }
     SetInformationOutputValidationAndActiveStatus.Execute(
         new SetInformationOutputValidationAndActiveStatusParameters
         {
             Owner = owner,
             InformationOutputID = outputJoinInfo.InformationOutputID,
             IsValidAndActive = true
         });
     context.Response.Redirect(redirectUrl, true);
 }
示例#10
0
 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 + "/");
 }
示例#11
0
 private void HandleAccountMergeConfirmation(HttpContext context, TBAccount account, TBEmailValidation emailValidation)
 {
     ConfirmAccountMergeFromEmail.Execute(new ConfirmAccountMergeFromEmailParameters
         {
             CurrentAccountID = account.ID,
             EmailConfirmation = emailValidation
         });
     string redirectUrl = emailValidation.RedirectUrlAfterValidation ?? "/auth/account/";
     context.Response.Redirect(redirectUrl, true);
 }
 private void HandleGroupJoinConfirmation(HttpContext context, 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");
     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");
 }