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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
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
                });
            }

            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());
 }
Exemplo n.º 5
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");
     }
 }
Exemplo n.º 6
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 + "/website/oip-group/oip-layout-groups-edit.phtml");
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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();
            }
        }
Exemplo n.º 9
0
        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);
            }
        }