public void SendInvitePersonal(string email, string additionalMember = "")
        {
            var newUserInfo = CoreContext.UserManager.GetUserByEmail(email);

            if (CoreContext.UserManager.UserExists(newUserInfo.ID))
            {
                return;
            }

            var lang = CoreContext.Configuration.CustomMode
                           ? "ru-RU"
                           : Thread.CurrentThread.CurrentUICulture.Name;

            var culture = SetupInfo.GetPersonalCulture(lang);

            var confirmUrl = CommonLinkUtility.GetConfirmationUrl(email, ConfirmType.EmpInvite, (int)EmployeeType.User)
                             + "&emplType=" + (int)EmployeeType.User
                             + "&lang=" + culture.Key
                             + additionalMember;

            client.SendNoticeToAsync(
                CoreContext.Configuration.CustomMode ? Actions.PersonalCustomModeConfirmation : Actions.PersonalConfirmation,
                null,
                StudioNotifyHelper.RecipientFromEmail(email, false),
                new[] { EMailSenderName },
                null,
                new TagValue(Tags.InviteLink, confirmUrl),
                new TagValue(CommonTags.Footer, CoreContext.Configuration.CustomMode ? "personalCustomMode" : "personal"),
                new TagValue(CommonTags.Culture, Thread.CurrentThread.CurrentUICulture.Name));
        }
Ejemplo n.º 2
0
        private bool TryAuthorize <T>(ChunkedRequestHelper <T> request)
        {
            if (request.Type(InstanceCrypto) == ChunkedRequestType.Initiate)
            {
                TenantManager.SetCurrentTenant(request.TenantId);
                SecurityContext.AuthenticateMeWithoutCookie(AuthManager.GetAccountByID(TenantManager.GetCurrentTenant().TenantId, request.AuthKey(InstanceCrypto)));
                var cultureInfo = request.CultureInfo(SetupInfo);
                if (cultureInfo != null)
                {
                    Thread.CurrentThread.CurrentUICulture = cultureInfo;
                }
                return(true);
            }

            if (!string.IsNullOrEmpty(request.UploadId))
            {
                var uploadSession = ChunkedUploadSessionHolder.GetSession <T>(request.UploadId);
                if (uploadSession != null)
                {
                    TenantManager.SetCurrentTenant(uploadSession.TenantId);
                    SecurityContext.AuthenticateMeWithoutCookie(AuthManager.GetAccountByID(TenantManager.GetCurrentTenant().TenantId, uploadSession.UserId));
                    var culture = SetupInfo.GetPersonalCulture(uploadSession.CultureName).Value;
                    if (culture != null)
                    {
                        Thread.CurrentThread.CurrentUICulture = culture;
                    }
                    return(true);
                }
            }

            return(false);
        }
        private static bool TryAuthorize(ChunkedRequestHelper request)
        {
            if (request.Type == ChunkedRequestType.Initiate)
            {
                CoreContext.TenantManager.SetCurrentTenant(request.TenantId);
                SecurityContext.AuthenticateMe(CoreContext.Authentication.GetAccountByID(request.AuthKey));
                if (request.CultureInfo != null)
                {
                    Thread.CurrentThread.CurrentUICulture = request.CultureInfo;
                }
                return(true);
            }

            if (!string.IsNullOrEmpty(request.UploadId))
            {
                var uploadSession = ChunkedUploadSessionHolder.GetSession(request.UploadId);
                if (uploadSession != null)
                {
                    CoreContext.TenantManager.SetCurrentTenant(uploadSession.TenantId);
                    SecurityContext.AuthenticateMe(CoreContext.Authentication.GetAccountByID(uploadSession.UserId));
                    var culture = SetupInfo.GetPersonalCulture(uploadSession.CultureName).Value;
                    if (culture != null)
                    {
                        Thread.CurrentThread.CurrentUICulture = culture;
                    }
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 4
0
        protected void SetLanguage(bool checkIp = true)
        {
            if (Request.QueryString.Count == 0)
            {
                var ipGeolocationInfo = new GeolocationHelper("teamlabsite").GetIPGeolocationFromHttpContext();
                if (checkIp && ipGeolocationInfo != null && !string.IsNullOrEmpty(ipGeolocationInfo.Key))
                {
                    var culture = SetupInfo.GetPersonalCulture(ipGeolocationInfo.Key);
                    if (culture.Value != null)
                    {
                        var redirectUrl = String.Format("/{0}/{1}", culture.Key, Request.Path);

                        if (redirectUrl.EndsWith("Auth.aspx", StringComparison.InvariantCultureIgnoreCase))
                        {
                            redirectUrl = redirectUrl.Remove(redirectUrl.IndexOf("Auth.aspx", StringComparison.OrdinalIgnoreCase));
                        }

                        Response.Redirect(redirectUrl, true);
                    }
                }
            }
            else if (!String.IsNullOrEmpty(Request["lang"]))
            {
                var lang        = Request["lang"].Split(',')[0];
                var cultureInfo = SetupInfo.GetPersonalCulture(lang).Value;

                if (cultureInfo != null)
                {
                    Thread.CurrentThread.CurrentUICulture = cultureInfo;
                    Thread.CurrentThread.CurrentCulture   = cultureInfo;
                }
                else
                {
                    Log.WarnFormat("Lang {0} not supported", lang);
                }
            }
            else if (!String.IsNullOrEmpty(Request["email"]))
            {
                var user = CoreContext.UserManager.GetUserByEmail(Request["email"]);

                if (user.ID.Equals(Constants.LostUser.ID))
                {
                    return;
                }

                if (user.CultureName != null)
                {
                    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(user.CultureName);
                    Thread.CurrentThread.CurrentCulture   = CultureInfo.GetCultureInfo(user.CultureName);
                }
            }
        }
Ejemplo n.º 5
0
        public CultureInfo CultureInfo(SetupInfo setupInfo)
        {
            if (_cultureInfo != null)
            {
                return(_cultureInfo);
            }

            var culture = _request.Query["culture"];

            if (string.IsNullOrEmpty(culture))
            {
                culture = "en-US";
            }

            return(_cultureInfo = setupInfo.GetPersonalCulture(culture).Value);
        }
Ejemplo n.º 6
0
        [Create(@"register", false)] //NOTE: This method doesn't require auth!!!
        public string RegisterUserOnPersonal(string email, string lang, bool spam, string recaptchaResponse)
        {
            if (!CoreContext.Configuration.Personal)
            {
                throw new MethodAccessException("Method is only available on personal.onlyoffice.com");
            }

            try
            {
                if (CoreContext.Configuration.CustomMode)
                {
                    lang = "ru-RU";
                }

                var cultureInfo = SetupInfo.GetPersonalCulture(lang).Value;

                if (cultureInfo != null)
                {
                    Thread.CurrentThread.CurrentUICulture = cultureInfo;
                }

                email.ThrowIfNull(new ArgumentException(Resource.ErrorEmailEmpty, "email"));

                if (!email.TestEmailRegex())
                {
                    throw new ArgumentException(Resource.ErrorNotCorrectEmail, "email");
                }

                if (!SetupInfo.IsSecretEmail(email) &&
                    !string.IsNullOrEmpty(SetupInfo.RecaptchaPublicKey) && !string.IsNullOrEmpty(SetupInfo.RecaptchaPrivateKey))
                {
                    var ip = Request.Headers["X-Forwarded-For"] ?? Request.UserHostAddress;

                    if (String.IsNullOrEmpty(recaptchaResponse) ||
                        !Authorize.ValidateRecaptcha(recaptchaResponse, ip))
                    {
                        throw new Authorize.RecaptchaException(Resource.RecaptchaInvalid);
                    }
                }

                var newUserInfo = CoreContext.UserManager.GetUserByEmail(email);

                if (CoreContext.UserManager.UserExists(newUserInfo.ID))
                {
                    if (!SetupInfo.IsSecretEmail(email) || SecurityContext.IsAuthenticated)
                    {
                        throw new Exception(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists"));
                    }

                    try
                    {
                        SecurityContext.CurrentAccount = Constants.CoreSystem;
                        CoreContext.UserManager.DeleteUser(newUserInfo.ID);
                    }
                    finally
                    {
                        SecurityContext.Logout();
                    }
                }
                if (!spam)
                {
                    try
                    {
                        const string _databaseID = "com";
                        using (var db = DbManager.FromHttpContext(_databaseID))
                        {
                            db.ExecuteNonQuery(new SqlInsert("template_unsubscribe", false)
                                               .InColumnValue("email", email.ToLowerInvariant())
                                               .InColumnValue("reason", "personal")
                                               );
                            Log.Debug(String.Format("Write to template_unsubscribe {0}", email.ToLowerInvariant()));
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Debug(String.Format("ERROR write to template_unsubscribe {0}, email:{1}", ex.Message, email.ToLowerInvariant()));
                    }
                }
                StudioNotifyService.Instance.SendInvitePersonal(email);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
            return(string.Empty);
        }