Esempio n. 1
0
        public IHttpActionResult ExternaLogin(Guid state, ExternalClient externalClient, string lang = "en",
                                              string source  = null,
                                              string formId  = null,
                                              string build   = null,
                                              string partner = null,
                                              Guid?visitorId = null,
                                              int?uid        = null, string cmp = null,
                                              bool?optin     = null,
                                              bool?trial     = null)
        {
            var service = OauthServiceFactory.CreateService(OauthManager.GetExternalClientName(externalClient));

            if (object.Equals(service, null))
            {
                return(NotFound());
            }

            var url   = new Uri(service.GetAuthenticationUrl(lang));
            var query = HttpUtility.ParseQueryString(url.Query);

            query.Add("state", state.ToString("N"));

            var uriBuilder = new UriBuilder(url);

            uriBuilder.Query = query.ToString();

            var externalToken = new ExternalToken(state, OauthManager.GetExternalClientName(externalClient))
            {
                VisitorId = visitorId,
                Uid       = uid,
                Cmp       = cmp,
                Optin     = optin,
                Build     = build,
                Partner   = partner,
                Trial     = trial
            };

            if (!string.IsNullOrEmpty(source))
            {
                externalToken.Source = string.Format("{0}-{1}", source, externalClient);
            }

            if (!string.IsNullOrEmpty(formId))
            {
                externalToken.FormId = FormIdBuilder.Build(formId, string.Format("-{0}", externalClient));
            }

            _externaLoginStorage.AddOrUpdate(state, externalToken, (key, oldValue) => externalToken);

            return(Redirect(uriBuilder.ToString()));
        }
Esempio n. 2
0
        private async Task <IHttpActionResult> _registerLegal(RegisterViewModel model, Account account, ViewAccountDetails accountDetails)
        {
            if (!object.Equals(account, null))
            {
                await _auth.AccountVisitorIdSetAsync(account, model.VisitorId);

                if (account.IsActivated)
                {
                    await NotificationManager.LegacyActivationSignInNotification(account);
                }
                else
                {
                    await NotificationManager.LegacyCreatePasswordReminder(account);
                }

                return(AccountExists());
            }

            account            = new Account(model.Email, model.FirstName, model.LastName);
            account.IsBusiness = model.IsBusiness();

            var result = await _auth.AccountCreateAsync(account, model.Password);

            var errorResult = GetErrorResult(result);

            if (!object.Equals(errorResult, null))
            {
                return(errorResult);
            }

            accountDetails.GeoIp   = IpAddressDetector.IpAddress;
            accountDetails.Id      = account.Id;
            accountDetails.Source  = model.Source;
            accountDetails.WebForm = FormIdBuilder.Build(model.FormId);

            await _auth.AccountOptinSetAsync(account, model.Optin);

            await _auth.AccountDetailsSetAsync(accountDetails);

            await _auth.AccountVisitorIdSetAsync(account, model.VisitorId);

            await NotificationManager.LegacyActivationCreatePassword(account);

            OauthLogger.CreateAccountWarn(Request, account, accountDetails, "registerLegal");

            return(Ok());
        }
Esempio n. 3
0
        private async Task <IHttpActionResult> _register(RegisterViewModel model, Account account, ViewAccountDetails accountDetails, string stackTrace)
        {
            if (!object.Equals(account, null))
            {
                await _auth.AccountVisitorIdSetAsync(account, model.VisitorId);

                if (model.IsBusiness())
                {
                    await _auth.AccountMaskAsBusinessAsync(account);

                    //make sure that user will get b2b 30 trial
                    await _auth.AccountActivateAsync(account);
                }

                if (account.IsBusiness && string.Equals(model.Source, "sodapdf.com-get-trial", StringComparison.InvariantCultureIgnoreCase))
                {
                    await NotificationManager.BusinessDownload(account);
                }

                if (account.IsEmptyPassword())
                {
                    if (!string.IsNullOrEmpty(model.Password))
                    {
                        await _auth.AccountPasswordSetAsync(account, model.Password);

                        await NotificationManager.AccountCreationComplete(account);
                    }
                    accountDetails.GeoIp = IpAddressDetector.IpAddress;
                    accountDetails.Id    = account.Id;
                    await _auth.AccountDetailsSetAsync(accountDetails);

                    return(Ok());
                }

                return(AccountExists());
            }
            account            = new Account(model.Email, model.FirstName, model.LastName);
            account.IsBusiness = model.IsBusiness();

            var result = await _auth.AccountCreateAsync(account, model.Password);

            var errorResult = GetErrorResult(result);

            if (!object.Equals(errorResult, null))
            {
                return(errorResult);
            }

            accountDetails.GeoIp   = IpAddressDetector.IpAddress;
            accountDetails.Id      = account.Id;
            accountDetails.Source  = model.Source;
            accountDetails.WebForm = FormIdBuilder.Build(model.FormId);

            await _auth.AccountOptinSetAsync(account, model.Optin);

            await _auth.AccountDetailsSetAsync(accountDetails);

            await _auth.AccountVisitorIdSetAsync(account, model.VisitorId);

            OauthLogger.CreateAccountWarn(Request, account, accountDetails, stackTrace);

            if ("sodapdf.com-esign-lite".Equals(model.Source, StringComparison.InvariantCultureIgnoreCase))
            {
                return(Ok()); //
            }
            if (account.IsBusiness && "sodapdf.com-get-trial".Equals(model.Source, StringComparison.InvariantCultureIgnoreCase))
            {
                await NotificationManager.BusinessDownloadNewAccount(account);
            }
            else
            {
                if (!string.IsNullOrEmpty(model.Password))
                {
#if PdfForge
                    if (!object.Equals(accountDetails, null) && "covermount".Equals(accountDetails.Build, StringComparison.InvariantCultureIgnoreCase))
                    {
                        await NotificationManager.EmailConfirmationCovermount(account);

                        return(Ok());
                    }
#endif

                    await NotificationManager.EmailConfirmation(account);
                }
                else
                {
                    if ("sodapdf.com-opdfs".Equals(model.Source, StringComparison.InvariantCultureIgnoreCase) ||
                        "sodapdf.com-opdfs-send-to-email".Equals(model.Source, StringComparison.InvariantCultureIgnoreCase))
                    {
                        await NotificationManager.MicrotransactionCreatePassword(account);
                    }
                }
            }

            return(Ok());
        }