Files
pocketbase/ui/src/collections/oauth2/larkOptions.js
T
2026-04-18 16:50:39 +03:00

74 lines
2.6 KiB
JavaScript

window.app = window.app || {};
window.app.oauth2 = window.app.oauth2 || {};
// note: data is the providerSettingsModal form store
window.app.oauth2.lark = function(providerInfo, namePrefix, data) {
const uniqueId = "lark_" + app.utils.randomString();
const domainOptions = [
{ label: "Feishu (China)", value: "feishu.cn" },
{ label: "Lark (International)", value: "larksuite.com" },
];
const local = store({
domain: data.config.authURL?.includes(domainOptions[1].value)
? domainOptions[1].value
: domainOptions[0].value,
});
const watchers = [
watch(() => local.domain, (domain) => {
if (domain) {
data.config.authURL = `https://accounts.${domain}/open-apis/authen/v1/authorize`;
data.config.tokenURL = `https://open.${domain}/open-apis/authen/v2/oauth/token`;
data.config.userInfoURL = `https://open.${domain}/open-apis/authen/v1/user_info`;
}
}),
];
return t.div(
{
pbEvent: "oauth2LarkOptions",
className: "oauth2-lark-options",
onunmount: () => {
watchers.forEach((w) => w?.unwatch());
},
},
t.div(
{ className: "grid" },
t.div(
{ className: "col-12" },
t.div(
{ className: "field" },
t.label({ htmlFor: uniqueId + ".site" }, "Site"),
app.components.select({
options: domainOptions,
required: true,
value: () => local.domain || "",
onchange: (selectedOpts) => {
local.domain = selectedOpts?.[0]?.value;
},
}),
),
),
t.div(
{ className: "col-12" },
t.div(
{ className: "alert info" },
"Note that the Lark user's ",
t.strong(null, "Union ID"),
" will be used for the association with the PocketBase user (see ",
t.a({
href:
"https://open.feishu.cn/document/platform-overveiw/basic-concepts/user-identity-introduction/introduction#3f2d4b63",
target: "_blank",
rel: "noopener noreferrer",
textContent: "Different Types of Lark User IDs",
}),
").",
),
),
),
);
};