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)); }
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); }
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); } } }
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); }
[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); }