Merge branch 'hotfix/v1.1.3' into develop

This commit is contained in:
Alexey Safronov 2023-09-05 09:45:42 +04:00
commit 96b916d81e
61 changed files with 680 additions and 72 deletions

View File

@ -0,0 +1,40 @@
// (c) Copyright Ascensio System SIA 2010-2022
//
// This program is a free software product.
// You can redistribute it and/or modify it under the terms
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
// any third-party rights.
//
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
//
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
//
// The interactive user interfaces in modified source and object code versions of the Program must
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
//
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
// trademark law for use of our trademarks.
//
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
namespace ASC.Core.Common.Security;
public class CspSettings : ISettings<CspSettings>
{
[JsonIgnore]
public Guid ID => new Guid("27504162-16FF-405F-8530-1537B0F2B89D");
public IEnumerable<string> Domains { get; set; }
public bool SetDefaultIfEmpty { get; set; }
public CspSettings GetDefault()
{
return new CspSettings();
}
}

View File

@ -50,7 +50,8 @@ public class ProviderManager
ProviderConstants.Yandex,
ProviderConstants.GosUslugi,
ProviderConstants.AppleId,
ProviderConstants.Microsoft
ProviderConstants.Microsoft,
ProviderConstants.Zoom
};
public static List<string> InviteExceptProviders = new List<string>

View File

@ -0,0 +1,263 @@
// (c) Copyright Ascensio System SIA 2010-2022
//
// This program is a free software product.
// You can redistribute it and/or modify it under the terms
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
// any third-party rights.
//
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
//
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
//
// The interactive user interfaces in modified source and object code versions of the Program must
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
//
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
// trademark law for use of our trademarks.
//
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
using AutoMapper;
using static System.Formats.Asn1.AsnWriter;
namespace ASC.FederatedLogin.LoginProviders;
[Scope]
public class ZoomLoginProvider : BaseLoginProvider<ZoomLoginProvider>
{
public override string AccessTokenUrl => "https://zoom.us/oauth/token";
public override string RedirectUri => this["zoomRedirectUrl"];
public override string ClientID => this["zoomClientId"];
public override string ClientSecret => this["zoomClientSecret"];
public override string CodeUrl => "https://zoom.us/oauth/authorize";
public override string Scopes => "";
public string ApiRedirectUri => this["zoomApiRedirectUrl"];
public const string ApiUrl = "https://api.zoom.us/v2";
private const string UserProfileUrl = $"{ApiUrl}/users/me";
public ZoomLoginProvider() { }
private readonly RequestHelper _requestHelper;
public ZoomLoginProvider(
OAuth20TokenHelper oAuth20TokenHelper,
TenantManager tenantManager,
CoreBaseSettings coreBaseSettings,
CoreSettings coreSettings,
IConfiguration configuration,
ICacheNotify<ConsumerCacheItem> cache,
ConsumerFactory consumerFactory,
Signature signature,
InstanceCrypto instanceCrypto,
RequestHelper requestHelper,
string name, int order, Dictionary<string, string> props, Dictionary<string, string> additional = null)
: base(oAuth20TokenHelper, tenantManager, coreBaseSettings, coreSettings, configuration, cache, consumerFactory, signature, instanceCrypto, name, order, props, additional)
{
_requestHelper = requestHelper;
}
public override LoginProfile ProcessAuthoriztion(HttpContext context, IDictionary<string, string> @params, IDictionary<string, string> additionalStateArgs)
{
try
{
var error = context.Request.Query["error"];
if (!string.IsNullOrEmpty(error))
{
if (error == "access_denied")
{
error = "Canceled at provider";
}
throw new Exception(error);
}
var code = context.Request.Query["code"];
if (string.IsNullOrEmpty(code))
{
context.Response.Redirect(_oAuth20TokenHelper.RequestCode<ZoomLoginProvider>(Scopes, @params, additionalStateArgs));
return null;
}
var token = GetAccessToken(code);
return GetLoginProfile(token);
}
catch (ThreadAbortException)
{
throw;
}
catch (Exception ex)
{
return LoginProfile.FromError(Signature, InstanceCrypto, ex);
}
}
public OAuth20Token GetAccessToken(string code, string redirectUri = null, string codeVerifier = null)
{
var clientPair = $"{ClientID}:{ClientSecret}";
var b64clientPair = Convert.ToBase64String(Encoding.UTF8.GetBytes(clientPair));
var body = new Dictionary<string, string>()
{
{ "code", code },
{ "grant_type", "authorization_code" },
{ "redirect_uri", redirectUri ?? RedirectUri }
};
if (codeVerifier != null)
{
body.Add("code_verifier", codeVerifier);
}
var json = _requestHelper.PerformRequest(AccessTokenUrl, "application/x-www-form-urlencoded", "POST",
body: string.Join("&", body.Select(kv => $"{HttpUtility.UrlEncode(kv.Key)}={HttpUtility.UrlEncode(kv.Value)}" )),
headers: new Dictionary<string, string> { { "Authorization", $"Basic {b64clientPair}" } }
);
return OAuth20Token.FromJson(json);
}
public override LoginProfile GetLoginProfile(string accessToken)
{
if (string.IsNullOrEmpty(accessToken))
{
throw new Exception("Login failed");
}
var (loginProfile, _) = RequestProfile(accessToken);
return loginProfile;
}
public (LoginProfile, ZoomProfile) GetLoginProfileAndRaw(string accessToken)
{
if (string.IsNullOrEmpty(accessToken))
{
throw new Exception("Login failed");
}
var (loginProfile, raw) = RequestProfile(accessToken);
return (loginProfile, raw);
}
public LoginProfile GetMinimalProfile(string uid)
{
return new LoginProfile(Signature, InstanceCrypto)
{
Id = uid,
Provider = ProviderConstants.Zoom
};
}
private (LoginProfile, ZoomProfile) ProfileFromZoom(string zoomProfile)
{
var jsonProfile = JsonConvert.DeserializeObject<ZoomProfile>(zoomProfile);
var profile = new LoginProfile(Signature, InstanceCrypto)
{
Id = jsonProfile.Id,
Avatar = jsonProfile.PicUrl?.ToString(),
EMail = jsonProfile.Email,
FirstName = jsonProfile.FirstName,
LastName = jsonProfile.LastName,
Locale = jsonProfile.Language,
TimeZone = jsonProfile.Timezone,
DisplayName = jsonProfile.DisplayName,
Provider = ProviderConstants.Zoom,
};
return (profile, jsonProfile);
}
private (LoginProfile, ZoomProfile) RequestProfile(string accessToken)
{
var json = _requestHelper.PerformRequest(UserProfileUrl, headers: new Dictionary<string, string> { { "Authorization", "Bearer " + accessToken } });
var (loginProfile, jsonProfile) = ProfileFromZoom(json);
return (loginProfile, jsonProfile);
}
public class ZoomProfile
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("first_name")]
public string FirstName { get; set; }
[JsonProperty("last_name")]
public string LastName { get; set; }
[JsonProperty("display_name")]
public string DisplayName { get; set; }
[JsonProperty("email")]
public string Email { get; set; }
[JsonProperty("role_name")]
public string RoleName { get; set; }
[JsonProperty("pmi")]
public long Pmi { get; set; }
[JsonProperty("use_pmi")]
public bool UsePmi { get; set; }
[JsonProperty("personal_meeting_url")]
public Uri PersonalMeetingUrl { get; set; }
[JsonProperty("timezone")]
public string Timezone { get; set; }
[JsonProperty("created_at")]
public DateTimeOffset CreatedAt { get; set; }
[JsonProperty("last_login_time")]
public DateTimeOffset LastLoginTime { get; set; }
[JsonProperty("pic_url")]
public Uri PicUrl { get; set; }
[JsonProperty("jid")]
public string Jid { get; set; }
[JsonProperty("account_id")]
public string AccountId { get; set; }
[JsonProperty("language")]
public string Language { get; set; }
[JsonProperty("phone_country")]
public string PhoneCountry { get; set; }
[JsonProperty("phone_number")]
public string PhoneNumber { get; set; }
[JsonProperty("status")]
public string Status { get; set; }
[JsonProperty("job_title")]
public string JobTitle { get; set; }
[JsonProperty("location")]
public string Location { get; set; }
[JsonProperty("account_number")]
public long AccountNumber { get; set; }
[JsonProperty("cluster")]
public string Cluster { get; set; }
[JsonProperty("user_created_at")]
public DateTimeOffset UserCreatedAt { get; set; }
}
}

View File

@ -40,4 +40,5 @@ public static class ProviderConstants
public const string Encryption = "e2e";
public const string AppleId = "appleid";
public const string Microsoft = "microsoft";
public const string Zoom = "zoom";
}

View File

@ -533,6 +533,37 @@
"private_container" : ""
}
}
}
},
{
"type": "ASC.FederatedLogin.LoginProviders.ZoomLoginProvider, ASC.FederatedLogin",
"services": [
{
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"type": "ASC.FederatedLogin.LoginProviders.ZoomLoginProvider, ASC.FederatedLogin"
},
{
"key": "zoom",
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"key": "zoom",
"type": "ASC.FederatedLogin.LoginProviders.ZoomLoginProvider, ASC.FederatedLogin"
}
],
"instanceScope": "perlifetimescope",
"parameters": {
"name": "zoom",
"order": "24",
"props": {
"zoomClientId": "",
"zoomClientSecret": ""
},
"additional": {
"zoomRedirectUrl": "https://service.teamlab.info/oauth2.aspx"
}
}
}
]
}

View File

@ -1,6 +1,6 @@
{
"name": "docspace",
"version": "1.1.2",
"version": "1.1.3",
"private": true,
"workspaces": {
"packages": [

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/client",
"version": "1.1.2",
"version": "1.1.3",
"private": true,
"homepage": "",
"scripts": {

View File

@ -83,6 +83,15 @@
window.DocSpaceConfig = {
...config,
};
if (window.navigator.userAgent.includes("ZoomWebKit") || window.navigator.userAgent.includes("ZoomApps")) {
window.DocSpaceConfig.editor = {
openOnNewPage: false,
requestClose: true
};
}
//console.log({ DocSpaceConfig: window.DocSpaceConfig });
})
.catch((e) => {
console.error(e);

View File

@ -111,7 +111,10 @@ const CreateEvent = ({
}
let tab =
!isDesktop && extension && open
!isDesktop &&
window.DocSpaceConfig?.editor?.openOnNewPage &&
extension &&
open
? window.open(
combineUrl(
window.DocSpaceConfig?.proxy?.url,

View File

@ -55,7 +55,10 @@ const ConvertPasswordDialogComponent = (props) => {
if (hasError) return;
tab =
!isDesktop && formCreationInfo.fileInfo.fileExst && formCreationInfo.open
!isDesktop &&
window.DocSpaceConfig?.editor?.openOnNewPage &&
formCreationInfo.fileInfo.fileExst &&
formCreationInfo.open
? window.open(
combineUrl(
window.DocSpaceConfig?.proxy?.url,

View File

@ -185,7 +185,7 @@ class NewFilesPanel extends React.Component {
config.homepage,
`/doceditor?fileId=${id}`
),
"_blank"
window.DocSpaceConfig?.editor?.openOnNewPage ? "_blank" : "_self"
)
);
}

View File

@ -444,7 +444,10 @@ export default inject(
const fileIcon = getIconSrc(ext, 32);
const downloadInCurrentTab = isArchive(ext) || !canViewedDocs(ext);
const downloadInCurrentTab =
window.DocSpaceConfig?.editor?.openOnNewPage === false ||
isArchive(ext) ||
!canViewedDocs(ext);
return {
isPersonal: personal,

View File

@ -141,7 +141,10 @@ export const openDocEditor = async (
tab.close();
}
} else {
window.open(url, "_blank");
window.open(
url,
window.DocSpaceConfig?.editor?.openOnNewPage ? "_blank" : "_self"
);
}
return Promise.resolve();

View File

@ -95,7 +95,11 @@ const VersionRow = (props) => {
setCommentValue(info.comment);
setShowEditPanel(!showEditPanel);
};
const onOpenFile = () => window.open(info.webUrl);
const onOpenFile = () =>
window.open(
info.webUrl,
window.DocSpaceConfig?.editor?.openOnNewPage ? "_blank" : "_self"
);
const onRestoreClick = () => {
onSetRestoreProcess(true);

View File

@ -336,7 +336,9 @@ class ContextOptionsStore {
: null;
let tab =
!isDesktopClient && fileExst
!isDesktopClient &&
window.DocSpaceConfig?.editor?.openOnNewPage &&
fileExst
? window.open(
combineUrl(
window.DocSpaceConfig?.proxy?.url,

View File

@ -2099,7 +2099,9 @@ class FilesActionStore {
if (canWebEdit || canViewedDocs) {
let tab =
!this.authStore.settingsStore.isDesktopClient && !isFolder
!this.authStore.settingsStore.isDesktopClient &&
window.DocSpaceConfig?.editor?.openOnNewPage &&
!isFolder
? window.open(
combineUrl(
window.DocSpaceConfig?.proxy?.url,

View File

@ -515,7 +515,9 @@ class UploadDataStore {
if (!error && isOpen && data && data[0]) {
let tab =
!this.authStore.settingsStore.isDesktopClient && fileInfo.fileExst
!this.authStore.settingsStore.isDesktopClient &&
window.DocSpaceConfig?.editor?.openOnNewPage &&
fileInfo.fileExst
? window.open(
combineUrl(
window.DocSpaceConfig?.proxy?.url,

View File

@ -3,6 +3,7 @@ import ShareFacebookReactSvgUrl from "PUBLIC_DIR/images/share.facebook.react.svg
import ShareTwitterReactSvgUrl from "PUBLIC_DIR/images/share.twitter.react.svg?url";
import ShareLinkedinReactSvgUrl from "PUBLIC_DIR/images/share.linkedin.react.svg?url";
import ShareMicrosoftReactSvgUrl from "PUBLIC_DIR/images/share.microsoft.react.svg?url";
import ShareZoomReactSvgUrl from "PUBLIC_DIR/images/share.zoom.react.svg?url";
export const LANGUAGE = "asc_language";
export const COOKIE_EXPIRATION_YEAR = 31536000000;
@ -271,6 +272,10 @@ export const providersData = Object.freeze({
label: "microsoft",
icon: ShareMicrosoftReactSvgUrl,
},
zoom: {
label: "zoom",
icon: ShareZoomReactSvgUrl,
},
});
export const LoaderStyle = {
title: "",

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/common",
"version": "1.1.2",
"version": "1.1.3",
"private": true,
"scripts": {
"build": "echo 'skip it'",

View File

@ -57,6 +57,7 @@ import VkSvgUrl from "PUBLIC_DIR/images/thirdparties/vk.svg?url";
import WordpressSvgUrl from "PUBLIC_DIR/images/thirdparties/wordpress.svg?url";
import YahooSvgUrl from "PUBLIC_DIR/images/thirdparties/yahoo.svg?url";
import YandexSvgUrl from "PUBLIC_DIR/images/thirdparties/yandex.svg?url";
import ZoomSvgUrl from "PUBLIC_DIR/images/thirdparties/zoom.svg?url";
import AviSvg24Url from "PUBLIC_DIR/images/icons/24/avi.svg?url";
import CsvSvg24Url from "PUBLIC_DIR/images/icons/24/csv.svg?url";
@ -592,6 +593,7 @@ export const thirdpartiesLogo = new Map([
["wordpress.svg", WordpressSvgUrl],
["yahoo.svg", YahooSvgUrl],
["yandex.svg", YandexSvgUrl],
["zoom.svg", ZoomSvgUrl],
]);
export const flagsIcons = new Map([

View File

@ -197,8 +197,8 @@ export function getCookie(name) {
let matches = document.cookie.match(
new RegExp(
"(?:^|; )" +
name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, "\\$1") +
"=([^;]*)"
name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, "\\$1") +
"=([^;]*)"
)
);
return matches ? decodeURIComponent(matches[1]) : undefined;
@ -287,6 +287,8 @@ export function getProviderTranslation(provider, t, linked = false) {
return t("Common:SignInWithMicrosoft");
case "sso":
return t("Common:SignInWithSso");
case "zoom":
return t("Common:SignInWithZoom");
}
}
@ -399,7 +401,7 @@ export function isElementInViewport(el) {
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <=
(window.innerHeight || document.documentElement.clientHeight) &&
(window.innerHeight || document.documentElement.clientHeight) &&
rect.right <= (window.innerWidth || document.documentElement.clientWidth)
);
}
@ -597,8 +599,11 @@ export const getFileExtension = (fileTitle: string) => {
export const getSystemTheme = () => {
const isDesktopClient = window["AscDesktopEditor"] !== undefined;
const desktopClientTheme = window?.RendererProcessVariable?.theme;
const isDark = desktopClientTheme?.id === "theme-dark" || desktopClientTheme?.id === "theme-contrast-dark" ||
(desktopClientTheme?.id === "theme-system" && desktopClientTheme?.system === "dark");
const isDark =
desktopClientTheme?.id === "theme-dark" ||
desktopClientTheme?.id === "theme-contrast-dark" ||
(desktopClientTheme?.id === "theme-system" &&
desktopClientTheme?.system === "dark");
return isDesktopClient
? isDark
@ -606,6 +611,6 @@ export const getSystemTheme = () => {
: ThemeKeys.BaseStr
: window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches
? ThemeKeys.DarkStr
: ThemeKeys.BaseStr;
? ThemeKeys.DarkStr
: ThemeKeys.BaseStr;
};

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/components",
"version": "1.1.2",
"version": "1.1.3",
"private": true,
"scripts": {
"build": "echo 'skip it'",

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/editor",
"version": "1.1.2",
"version": "1.1.3",
"private": true,
"homepage": "/doceditor",
"scripts": {

View File

@ -22,7 +22,7 @@ import {
import { EditorWrapper } from "../components/StyledEditor";
import { useTranslation } from "react-i18next";
import withDialogs from "../helpers/withDialogs";
import { assign } from "@docspace/common/utils";
import { assign, frameCallEvent } from "@docspace/common/utils";
import toastr from "@docspace/components/toast/toastr";
import { DocumentEditor } from "@onlyoffice/document-editor-react";
import ErrorContainer from "@docspace/common/components/ErrorContainer";
@ -346,7 +346,10 @@ function Editor({
config.homepage,
`/doceditor?fileId=${encodeURIComponent(newFile.id)}`
);
window.open(newUrl, "_blank");
window.open(
newUrl,
window.DocSpaceConfig?.editor?.openOnNewPage ? "_blank" : "_self"
);
})
.catch((e) => {
toastr.error(e);
@ -646,6 +649,41 @@ function Editor({
}
};
const onSDKRequestClose = () => {
const search = window.location.search;
const editorGoBack = new URLSearchParams(search).get("editorGoBack");
if (editorGoBack === "event") {
frameCallEvent({ event: "onEditorCloseCallback" });
} else {
const backUrl = getBackUrl();
window.location.replace(backUrl);
}
};
const getBackUrl = () => {
if (!fileInfo) return;
const shareIndex = search.indexOf("share=");
const key = search.substring(shareIndex + 6);
let backUrl = "";
if (fileInfo.rootFolderType === FolderType.Rooms) {
if (key) {
backUrl = `/rooms/share?key=${key}`;
} else {
backUrl = `/rooms/shared/${fileInfo.folderId}/filter?folder=${fileInfo.folderId}`;
}
} else {
backUrl = `/rooms/personal/filter?folder=${fileInfo.folderId}`;
}
const url = window.location.href;
const origin = url.substring(0, url.indexOf("/doceditor"));
return `${combineUrl(origin, backUrl)}`;
};
const init = () => {
try {
if (isMobile) {
@ -653,37 +691,28 @@ function Editor({
}
let goBack;
const url = window.location.href;
const search = window.location.search;
const shareIndex = search.indexOf("share=");
const key = search.substring(shareIndex + 6);
if (fileInfo) {
let backUrl = "";
if (fileInfo.rootFolderType === FolderType.Rooms) {
if (key) {
backUrl = `/rooms/share?key=${key}`;
} else {
backUrl = `/rooms/shared/${fileInfo.folderId}/filter?folder=${fileInfo.folderId}`;
}
} else {
backUrl = `/rooms/personal/filter?folder=${fileInfo.folderId}`;
}
const origin = url.substring(0, url.indexOf("/doceditor"));
const search = window.location.search;
const editorGoBack = new URLSearchParams(search).get("editorGoBack");
goBack =
editorGoBack === "false"
? {}
: {
blank: true,
requestClose: false,
text: t("FileLocation"),
url: `${combineUrl(origin, backUrl)}`,
};
if (editorGoBack === "false") {
goBack = {};
} else if (editorGoBack === "event") {
goBack = {
requestClose: true,
text: t("FileLocation"),
};
} else {
goBack = {
requestClose: window.DocSpaceConfig?.editor?.requestClose ?? false,
text: t("FileLocation"),
};
if (!window.DocSpaceConfig?.editor?.requestClose) {
goBack.blank = window.DocSpaceConfig?.editor?.openOnNewPage ?? true;
goBack.url = getBackUrl();
}
}
}
config.editorConfig.customization = {
@ -700,6 +729,8 @@ function Editor({
// config.document.info.favorite = null;
// }
const url = window.location.href;
if (url.indexOf("anchor") !== -1) {
const splitUrl = url.split("anchor=");
const decodeURI = decodeURIComponent(splitUrl[1]);
@ -721,10 +752,14 @@ function Editor({
onRequestReferenceData,
onRequestUsers,
onRequestSendNotify,
onRequestCreateNew;
onRequestCreateNew,
onRequestClose;
if (successAuth && !user.isVisitor) {
if (isDesktopEditor) {
if (
isDesktopEditor ||
window.DocSpaceConfig?.editor?.openOnNewPage === false
) {
onRequestCreateNew = onSDKRequestCreateNew;
} else {
//FireFox security issue fix (onRequestCreateNew will be blocked)
@ -781,6 +816,10 @@ function Editor({
onRequestSendNotify = onSDKRequestSendNotify;
}
if (window.DocSpaceConfig?.editor?.requestClose) {
onRequestClose = onSDKRequestClose;
}
const events = {
events: {
onRequestReferenceData,
@ -806,6 +845,7 @@ function Editor({
onRequestUsers,
onRequestSendNotify,
onRequestCreateNew,
onRequestClose,
},
};

View File

@ -66,6 +66,13 @@ export default function template(
window.DocSpaceConfig = {
...config,
};
if (window.navigator.userAgent.includes("ZoomWebKit") || window.navigator.userAgent.includes("ZoomApps")) {
window.DocSpaceConfig.editor = {
openOnNewPage: false,
requestClose: true
};
}
})
.catch((e) => {
console.error(e);

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/login",
"version": "1.1.2",
"version": "1.1.3",
"private": true,
"homepage": "/login",
"scripts": {

View File

@ -79,6 +79,13 @@ const template: Template = (
window.DocSpaceConfig = {
...config,
};
if (window.navigator.userAgent.includes("ZoomWebKit") || window.navigator.userAgent.includes("ZoomApps")) {
window.DocSpaceConfig.editor = {
openOnNewPage: false,
requestClose: true
};
}
})
.catch((e) => {
console.error(e);

View File

@ -0,0 +1,10 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_468_3079)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0C15.5228 0 20 4.47715 20 10ZM5 7H9.02446H11.5077C12.3318 7 13 7.64261 13 8.4353V13H6.49235C5.66814 13 5 12.3574 5 11.5647V7ZM13.5 9L16 7V13L13.5 11V10V9Z" fill="#008CFF"/>
</g>
<defs>
<clipPath id="clip0_468_3079">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 553 B

View File

@ -0,0 +1,10 @@
<svg width="79" height="40" viewBox="0 0 79 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_8445_1359)">
<path d="M16.5673 28.7192H2.51991C2.06053 28.7257 1.60812 28.6065 1.21161 28.3745C0.815099 28.1425 0.489576 27.8066 0.27024 27.4031C0.0330939 26.9422 -0.051619 26.4179 0.0282935 25.9057C0.108206 25.3936 0.348623 24.92 0.714942 24.5531L10.4635 14.7739H3.48779C2.56275 14.7739 1.6756 14.4066 1.0215 13.7528C0.367401 13.099 -6.90971e-05 12.2123 -6.90971e-05 11.2876H12.9486C13.408 11.2812 13.8604 11.4004 14.2569 11.6323C14.6534 11.8643 14.9789 12.2002 15.1983 12.6037C15.4354 13.0647 15.5201 13.589 15.4402 14.1011C15.3603 14.6133 15.1199 15.0869 14.7536 15.4538L4.97013 25.2329H13.0794C14.0044 25.2329 14.8916 25.6002 15.5457 26.254C16.1998 26.9078 16.5673 27.7946 16.5673 28.7192ZM72.2073 11C71.2496 11.0027 70.3033 11.2074 69.4303 11.601C68.5573 11.9945 67.7772 12.5678 67.1412 13.2835C66.5052 12.5678 65.7252 11.9945 64.8521 11.601C63.9791 11.2074 63.0328 11.0027 62.0751 11C60.2569 11.0477 58.5293 11.8034 57.2605 13.1058C55.9916 14.4083 55.2819 16.1547 55.2825 17.9726V28.7192C55.7405 28.7192 56.1941 28.629 56.6172 28.4538C57.0404 28.2786 57.4249 28.0218 57.7488 27.6981C58.0727 27.3744 58.3296 26.99 58.5049 26.5671C58.6801 26.1441 58.7704 25.6907 58.7704 25.2329V17.9029C58.7577 17.0331 59.0818 16.192 59.6748 15.5553C60.2679 14.9187 61.0841 14.5357 61.953 14.4863C62.4023 14.4639 62.8515 14.5329 63.2733 14.6892C63.6951 14.8454 64.0807 15.0857 64.4069 15.3954C64.733 15.7051 64.9928 16.0777 65.1705 16.4908C65.3483 16.9039 65.4403 17.3487 65.4409 17.7983V25.2068C65.4409 26.1314 65.8083 27.0181 66.4625 27.672C67.1166 28.3258 68.0037 28.6931 68.9287 28.6931V17.9029C68.9155 17.0402 69.2335 16.2051 69.8174 15.5696C70.4013 14.9341 71.2067 14.5464 72.0678 14.4863C72.5135 14.4699 72.958 14.5434 73.3746 14.7024C73.7913 14.8614 74.1717 15.1026 74.4931 15.4117C74.8146 15.7208 75.0704 16.0914 75.2455 16.5014C75.4205 16.9114 75.5112 17.3525 75.5121 17.7983V25.2068C75.5121 26.1314 75.8795 27.0181 76.5336 27.672C77.1878 28.3258 78.0749 28.6931 78.9999 28.6931V17.9726C79.0006 16.1547 78.2908 14.4083 77.0219 13.1058C75.7531 11.8034 74.0255 11.0477 72.2073 11ZM34.181 20.0034C34.1758 21.7778 33.6446 23.5109 32.6546 24.9838C31.6646 26.4566 30.2602 27.6032 28.6186 28.2787C26.977 28.9541 25.172 29.1282 23.4316 28.7788C21.6911 28.4295 20.0933 27.5725 18.8398 26.3159C17.5864 25.0594 16.7336 23.4598 16.3892 21.7191C16.0448 19.9784 16.2241 18.1747 16.9047 16.5358C17.5852 14.8969 18.7364 13.4964 20.2127 12.5111C21.6891 11.5259 23.4245 11 25.1997 11C26.381 11.0011 27.5505 11.235 28.6414 11.6882C29.7322 12.1414 30.723 12.805 31.5571 13.6412C32.3912 14.4773 33.0523 15.4696 33.5025 16.5613C33.9527 17.653 34.1832 18.8226 34.181 20.0034ZM30.6931 20.0034C30.6931 18.9174 30.3709 17.8558 29.7673 16.9528C29.1637 16.0498 28.3057 15.346 27.3019 14.9304C26.2982 14.5148 25.1936 14.4061 24.128 14.618C23.0624 14.8298 22.0836 15.3528 21.3153 16.1207C20.547 16.8887 20.0239 17.867 19.8119 18.9322C19.5999 19.9973 19.7087 21.1014 20.1245 22.1047C20.5403 23.1081 21.2444 23.9656 22.1478 24.569C23.0511 25.1723 24.1132 25.4944 25.1997 25.4944C26.6559 25.4921 28.0519 24.9128 29.0816 23.8836C30.1113 22.8543 30.6908 21.459 30.6931 20.0034ZM53.5386 20.0034C53.5334 21.7778 53.0023 23.5109 52.0123 24.9838C51.0222 26.4566 49.6178 27.6032 47.9762 28.2787C46.3347 28.9541 44.5297 29.1282 42.7892 28.7788C41.0487 28.4295 39.4509 27.5725 38.1974 26.3159C36.944 25.0594 36.0912 23.4598 35.7468 21.7191C35.4024 19.9784 35.5817 18.1747 36.2623 16.5358C36.9428 14.8969 38.094 13.4964 39.5704 12.5111C41.0467 11.5259 42.7821 11 44.5573 11C45.7386 11.0011 46.9081 11.235 47.999 11.6882C49.0898 12.1414 50.0806 12.805 50.9147 13.6412C51.7488 14.4773 52.4099 15.4696 52.8601 16.5613C53.3103 17.653 53.5409 18.8226 53.5386 20.0034ZM50.0507 20.0034C50.0507 18.9174 49.7285 17.8558 49.1249 16.9528C48.5213 16.0498 47.6633 15.346 46.6596 14.9304C45.6558 14.5148 44.5512 14.4061 43.4856 14.618C42.42 14.8298 41.4412 15.3528 40.6729 16.1207C39.9047 16.8887 39.3815 17.867 39.1695 18.9322C38.9575 19.9973 39.0663 21.1014 39.4821 22.1047C39.8979 23.1081 40.602 23.9656 41.5054 24.569C42.4088 25.1723 43.4708 25.4944 44.5573 25.4944C46.0136 25.4921 47.4095 24.9128 48.4392 23.8836C49.4689 22.8543 50.0484 21.459 50.0507 20.0034Z" fill="#0B5CFF"/>
</g>
<defs>
<clipPath id="clip0_8445_1359">
<rect width="79" height="40" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Microsoft ilə giriş edin",
"SignInWithSso": "SSO ilə daxil olun",
"SignInWithTwitter": "Twitter ilə giriş edin",
"SignInWithZoom": "Zoom ilə giriş edin",
"Size": "Ölçü",
"SizeImageLarge": "Şəklin ölçüsü çox böyükdür, lütfən, başqa şəkil seçin.",
"SomethingWentWrong": "Xəta baş Verdi.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Влез с Microsoft",
"SignInWithSso": "Вход със SSO",
"SignInWithTwitter": "Влез с Twitter",
"SignInWithZoom": "Влез с Zoom",
"Size": "Размер",
"SizeImageLarge": "Размерът на изображението е твърде голям, моля изберете друго изображение.",
"SomethingWentWrong": "Нещо се обърка.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Přihlásit se pomocí Microsoft",
"SignInWithSso": "Přihlásit se pomocí SSO",
"SignInWithTwitter": "Přihlásit se pomocí Twitteru",
"SignInWithZoom": "Přihlásit se pomocí Zoom",
"Size": "Velikost",
"SizeImageLarge": "Velikost obrázku je příliš velká, vyberte prosím jiný obrázek.",
"SomethingWentWrong": "Něco se pokazilo.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Login über Microsoft",
"SignInWithSso": "Mit SSO anmelden",
"SignInWithTwitter": "Login über Twitter",
"SignInWithZoom": "Login über Zoom",
"Size": "Größe",
"SizeImageLarge": "Das Bild ist zu groß, bitte wählen Sie ein anderes Bild.",
"SomethingWentWrong": "Ein Fehler ist aufgetreten.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Συνδεθείτε με το Microsoft",
"SignInWithSso": "Σύνδεση με SSO",
"SignInWithTwitter": "Συνδεθείτε με το Twitter",
"SignInWithZoom": "Συνδεθείτε με την Zoom",
"Size": "Μέγεθος",
"SizeImageLarge": "Το μέγεθος της εικόνας είναι πολύ μεγάλο, επιλέξτε άλλη εικόνα.",
"SomethingWentWrong": "Κάτι πήγε στραβά.",

View File

@ -249,6 +249,7 @@
"SignInWithMicrosoft": "Sign in with Microsoft",
"SignInWithSso": "Sign in with SSO",
"SignInWithTwitter": "Sign in with Twitter",
"SignInWithZoom": "Sign in with Zoom",
"Size": "Size",
"SizeImageLarge": "The image size is too large, please select another image.",
"SomethingWentWrong": "Something went wrong.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Iniciar sesión con Microsoft",
"SignInWithSso": "Iniciar sesión con SSO",
"SignInWithTwitter": "Iniciar sesión con Twitter",
"SignInWithZoom": "Iniciar sesión con Zoom",
"Size": "Tamaño",
"SizeImageLarge": "El tamaño de la imagen es demasiado grande. Por favor, seleccione otra imagen.",
"SomethingWentWrong": "Se ha producido un error.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Kirjaudu sisään Microsoftilla",
"SignInWithSso": "Kirjaudu sisään kertakirjautumisella",
"SignInWithTwitter": "Kirjaudu sisään Twitterillä",
"SignInWithZoom": "Kirjaudu sisään Zoomillä",
"Size": "Koko",
"SizeImageLarge": "Kuva on liian suuri, ole hyvä ja valitse toinen kuva.",
"SomethingWentWrong": "Jokin meni pieleen.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Se connecter avec Microsoft",
"SignInWithSso": "Se connecter avec SSO",
"SignInWithTwitter": "Se connecter avec Twitter",
"SignInWithZoom": "Se connecter avec Zoom",
"Size": "Taille",
"SizeImageLarge": "La taille de limage est trop grande, veuillez sélectionner une autre image.",
"SomethingWentWrong": "Un problème est survenu.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Մուտք գործեք Microsoft-ով",
"SignInWithSso": "Մուտք գործեք SSO-ով",
"SignInWithTwitter": "Մուտք գործեք Twitter-ով",
"SignInWithZoom": "Մուտք գործեք Zoom-ով",
"Size": "Չափ",
"SizeImageLarge": "Պատկերի չափը չափազանց մեծ է, խնդրում ենք ընտրել մեկ այլ պատկեր:",
"SomethingWentWrong": "Ինչ որ բան այնպես չգնաց.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Accedere con Microsoft",
"SignInWithSso": "Accedere con SSO",
"SignInWithTwitter": "Accedere con Twitter",
"SignInWithZoom": "Accedere con Zoom",
"Size": "Dimensione",
"SizeImageLarge": "La dimensione dell&apos;immagine è troppo grande, seleziona un'altra immagine.",
"SomethingWentWrong": "Qualcosa è andato storto.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Microsoftでサインイン",
"SignInWithSso": "SSOでサインイン",
"SignInWithTwitter": "Twitterでサインイン",
"SignInWithZoom": "Zoomでサインイン",
"Size": "サイズ",
"SizeImageLarge": "画像サイズが大きすぎるため、別の画像を選択してください。",
"SomethingWentWrong": "何かが間違っていた.",

View File

@ -243,6 +243,7 @@
"SignInWithMicrosoft": "Microsoft으로 로그인",
"SignInWithSso": "SSO로 로그인",
"SignInWithTwitter": "Twitter로 로그인",
"SignInWithZoom": "Zoom로 로그인",
"Size": "크기",
"SizeImageLarge": "이미지 크기가 너무 큽니다. 다른 이미지를 선택해주세요.",
"SomethingWentWrong": "무언가 잘못됐습니다.",

View File

@ -243,6 +243,7 @@
"SignInWithMicrosoft": "ເຂົ້າລະບົບດ້ວຍ Microsoft",
"SignInWithSso": "ເຂົ້າສູ່ລະບົບດ້ວຍ SSO",
"SignInWithTwitter": "ເຂົ້າລະບົບດ້ວຍ Twitter",
"SignInWithZoom": "ເຂົ້າລະບົບດ້ວຍ Zoom",
"Size": "ຂະໜາດ",
"SizeImageLarge": "ຂະໜາດຮູບໃຫຍ່ເກີນໄປ, ກະລຸນາເລືອກຮູບອື່ນ.",
"SomethingWentWrong": "ມີບາງຢ່າງຜິດພາດ",

View File

@ -243,6 +243,7 @@
"SignInWithMicrosoft": "Pierakstīties ar Microsoft",
"SignInWithSso": "Pierakstīties, izmantojot SSO",
"SignInWithTwitter": "Pierakstīties ar Twitter",
"SignInWithZoom": "Pierakstīties ar Zoom",
"Size": "Izmērs",
"SizeImageLarge": "Attēls ir pārāk liels. Lūdzu, atlasiet citu attēlu.",
"SomethingWentWrong": "Radās problēma.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Aanmelden met Microsoft",
"SignInWithSso": "Aanmelden met SSO",
"SignInWithTwitter": "Aanmelden met Twitter",
"SignInWithZoom": "Aanmelden met Zoom",
"Size": "Formaat",
"SizeImageLarge": "De afbeelding is te groot, kies een andere afbeelding.",
"SomethingWentWrong": "Er is iets fout gegaan.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Zaloguj się przez Microsoft",
"SignInWithSso": "Zaloguj się za pomocą logowania jednokrotnego",
"SignInWithTwitter": "Zaloguj się przez Twitter",
"SignInWithZoom": "Zaloguj się przez Zoom",
"Size": "Rozmiar",
"SizeImageLarge": "Rozmiar obrazu jest zbyt duży, wybierz inny obraz.",
"SomethingWentWrong": "Coś poszło nie tak.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Entrar com Microsoft",
"SignInWithSso": "Fazer login com SSO",
"SignInWithTwitter": "Entrar com Twitter",
"SignInWithZoom": "Entrar com Zoom",
"Size": "Tamanho",
"SizeImageLarge": "O tamanho da imagem é muito grande, selecione outra imagem.",
"SomethingWentWrong": "Algo deu errado.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Iniciar sessão com a Microsoft",
"SignInWithSso": "Entrar com SSO",
"SignInWithTwitter": "Iniciar sessão com o Twitter",
"SignInWithZoom": "Iniciar sessão com o Zoom",
"Size": "Tamanho",
"SizeImageLarge": "A imagem é demasiado grande, por favor selecione outra imagem.",
"SomethingWentWrong": "Ocorreu um erro.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Conectare cu Microsoft",
"SignInWithSso": "Conectare cu SSO",
"SignInWithTwitter": "Conectare cu Twitter",
"SignInWithZoom": "Conectare cu Zoom",
"Size": "Dimensiune",
"SizeImageLarge": "Dimensiunea imaginii este prea mare, selectaţi o altă imagine.",
"SomethingWentWrong": "Ceva nu a mers bine.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Вход через Microsoft",
"SignInWithSso": "Вход через SSO",
"SignInWithTwitter": "Вход через Twitter",
"SignInWithZoom": "Вход через Zoom",
"Size": "Размер",
"SizeImageLarge": "Размер изображения слишком большой, пожалуйста, выберите другое изображение.",
"SomethingWentWrong": "Что-то пошло не так.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Prihlásiť sa pomocou Microsoft",
"SignInWithSso": "Prihlásiť sa pomocou SSO",
"SignInWithTwitter": "Prihlásiť sa pomocou Twitteru",
"SignInWithZoom": "Prihlásiť sa pomocou Zoom",
"Size": "Veľkosť",
"SizeImageLarge": "Obrázok je príliš veľký, vyberte iný obrázok.",
"SomethingWentWrong": "Niečo sa pokazilo.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Prijavi se z Microsoft",
"SignInWithSso": "Vpiši se s SSO",
"SignInWithTwitter": "Prijavi se s Twitter",
"SignInWithZoom": "Prijavi se s Zoom",
"Size": "Velikost",
"SizeImageLarge": "Velikost slike je prevelika, izberite drugo sliko.",
"SomethingWentWrong": "Nekaj je šlo narobe.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Microsoft hesabınız ile giriş yapın",
"SignInWithSso": "SSO ile giriş yap",
"SignInWithTwitter": "Twitter hesabınız ile giriş yapın",
"SignInWithZoom": "Zoom hesabınız ile giriş yapın",
"Size": "Boyut",
"SizeImageLarge": "Resim boyutu çok büyük, lütfen başka bir resim seçin.",
"SomethingWentWrong": "Bir şeyler ters gitti.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Увійти за допомогою Microsoft",
"SignInWithSso": "Увійти за допомогою єдиного входу",
"SignInWithTwitter": "Увійти за допомогою Twitter",
"SignInWithZoom": "Увійти за допомогою Zoom",
"Size": "Розмір",
"SizeImageLarge": "Розмір зображення завеликий, виберіть інше зображення.",
"SomethingWentWrong": "Сталася помилка.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "Đăng nhập bằng Microsoft",
"SignInWithSso": "Đăng nhập bằng SSO",
"SignInWithTwitter": "Đăng nhập bằng Twitter",
"SignInWithZoom": "Đăng nhập bằng Zoom",
"Size": "Kích cỡ",
"SizeImageLarge": "Kích thước hình ảnh quá lớn, xin vui lòng chọn một hình ảnh khác.",
"SomethingWentWrong": "Đã xảy ra lỗi.",

View File

@ -244,6 +244,7 @@
"SignInWithMicrosoft": "使用Microsoft登录",
"SignInWithSso": "用SSO登录",
"SignInWithTwitter": "使用Twitter登录",
"SignInWithZoom": "使用Zoom登录",
"Size": "大小",
"SizeImageLarge": "图像尺寸过大,请选择另一张图像。",
"SomethingWentWrong": "出了点问题。",

View File

@ -46,6 +46,7 @@
onCloseCallback: null,
onAppReady: null,
onAppError: null,
onEditorCloseCallback: null,
},
};
@ -124,12 +125,30 @@
}
case "editor": {
path = `/doceditor/?fileId=${config.id}&type=${config.editorType}&editorGoBack=${config.editorGoBack}`;
let goBack = config.editorGoBack;
if (
config.events.onEditorCloseCallback &&
typeof config.events.onEditorCloseCallback === "function"
) {
goBack = "event";
}
path = `/doceditor/?fileId=${config.id}&type=${config.editorType}&editorGoBack=${goBack}`;
break;
}
case "viewer": {
path = `/doceditor/?fileId=${config.id}&type=${config.editorType}&action=view&editorGoBack=${config.editorGoBack}`;
let goBack = config.editorGoBack;
if (
config.events.onEditorCloseCallback &&
typeof config.events.onEditorCloseCallback === "function"
) {
goBack = "event";
}
path = `/doceditor/?fileId=${config.id}&type=${config.editorType}&action=view&editorGoBack=${goBack}`;
break;
}

View File

@ -11,5 +11,9 @@
"thumbnails1280x720": false,
"pdfViewer": true,
"pdfViewerUrl": "ds-vpath/sdkjs/pdf/src/engine/viewer.js",
"imageThumbnails": false
"imageThumbnails": false,
"editor": {
"openOnNewPage": true,
"requestClose": false
}
}

View File

@ -29,20 +29,6 @@ using ASC.Web.Files.Classes;
namespace ASC.Web.Api.Core;
public class CspSettings : ISettings<CspSettings>
{
[JsonIgnore]
public Guid ID => new Guid("27504162-16FF-405F-8530-1537B0F2B89D");
public IEnumerable<string> Domains { get; set; }
public bool SetDefaultIfEmpty { get; set; }
public CspSettings GetDefault()
{
return new CspSettings();
}
}
[Scope]
public class CspSettingsHelper
{

View File

@ -1518,6 +1518,51 @@ namespace ASC.Web.Core.PublicResources {
}
}
/// <summary>
/// Looks up a localized string similar to Zoom.
/// </summary>
public static string ConsumersZoom {
get {
return ResourceManager.GetString("ConsumersZoom", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Zoom client id.
/// </summary>
public static string ConsumersZoomClientId {
get {
return ResourceManager.GetString("ConsumersZoomClientId", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Zoom client secret.
/// </summary>
public static string ConsumersZoomClientSecret {
get {
return ResourceManager.GetString("ConsumersZoomClientSecret", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Enable the application to sign in to the portal using a Zoom account..
/// </summary>
public static string ConsumersZoomDescription {
get {
return ResourceManager.GetString("ConsumersZoomDescription", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Enable this app to allow your users to sign in to ONLYOFFICE using their Zoom accounts. {0}Go to the Zoom Developers website and create a new app ONLYOFFICE integration. Insert the data you received below:.
/// </summary>
public static string ConsumersZoomInstruction {
get {
return ResourceManager.GetString("ConsumersZoomInstruction", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Password recovery operation is prohibited for an LDAP user.
/// </summary>

View File

@ -1,5 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
@ -994,4 +1053,19 @@
<data name="ErrorTooManyLoginAttempts" xml:space="preserve">
<value>Too many login attempts. Please try again later</value>
</data>
<data name="ConsumersZoomClientId" xml:space="preserve">
<value>Zoom client id</value>
</data>
<data name="ConsumersZoomClientSecret" xml:space="preserve">
<value>Zoom client secret</value>
</data>
<data name="ConsumersZoom" xml:space="preserve">
<value>Zoom</value>
</data>
<data name="ConsumersZoomDescription" xml:space="preserve">
<value>Enable the application to sign in to the portal using a Zoom account.</value>
</data>
<data name="ConsumersZoomInstruction" xml:space="preserve">
<value>Enable this app to allow your users to sign in to ONLYOFFICE using their Zoom accounts. {0}Go to the Zoom Developers website and create a new app ONLYOFFICE integration. Insert the data you received below:</value>
</data>
</root>