Compare commits

...

9 Commits

42 changed files with 270 additions and 18 deletions

View File

@@ -719,7 +719,8 @@ func (c *ApiController) Login() {
setHttpClient(idProvider, provider.Type)
if authForm.State != conf.GetConfigString("authState") && authForm.State != application.Name {
stateApplicationName := strings.Split(authForm.State, "-org-")[0]
if authForm.State != conf.GetConfigString("authState") && stateApplicationName != application.Name {
c.ResponseError(fmt.Sprintf(c.T("auth:State expected: %s, but got: %s"), conf.GetConfigString("authState"), authForm.State))
return
}

View File

@@ -435,9 +435,15 @@ func (c *ApiController) ResetEmailOrPhone() {
switch destType {
case object.VerifyTypeEmail:
id := user.GetId()
user.Email = dest
user.EmailVerified = true
_, err = object.UpdateUser(user.GetId(), user, []string{"email", "email_verified"}, false)
columns := []string{"email", "email_verified"}
if organization.UseEmailAsUsername {
user.Name = user.Email
columns = append(columns, "name")
}
_, err = object.UpdateUser(id, user, columns, false)
case object.VerifyTypePhone:
user.Phone = dest
_, err = object.SetUserField(user, "phone", user.Phone)
@@ -449,6 +455,9 @@ func (c *ApiController) ResetEmailOrPhone() {
c.ResponseError(err.Error())
return
}
if organization.UseEmailAsUsername {
c.SetSessionUsername(user.GetId())
}
err = object.DisableVerificationCode(checkDest)
if err != nil {

View File

@@ -67,6 +67,7 @@ type Application struct {
DisplayName string `xorm:"varchar(100)" json:"displayName"`
Logo string `xorm:"varchar(200)" json:"logo"`
Order int `json:"order"`
HomepageUrl string `xorm:"varchar(100)" json:"homepageUrl"`
Description string `xorm:"varchar(100)" json:"description"`
Organization string `xorm:"varchar(100)" json:"organization"`

View File

@@ -510,6 +510,8 @@ func GetUserByPhone(owner string, phone string) (*User, error) {
return nil, nil
}
phone = util.GetSeperatedPhone(phone)
user := User{Owner: owner, Phone: phone}
existed, err := ormer.Engine.Get(&user)
if err != nil {
@@ -528,6 +530,8 @@ func GetUserByPhoneOnly(phone string) (*User, error) {
return nil, nil
}
phone = util.GetSeperatedPhone(phone)
user := User{Phone: phone}
existed, err := ormer.Engine.Get(&user)
if err != nil {

View File

@@ -80,7 +80,8 @@ func GetUserByFields(organization string, field string) (*User, error) {
}
// check phone
user, err = GetUserByField(organization, "phone", field)
phone := util.GetSeperatedPhone(field)
user, err = GetUserByField(organization, "phone", phone)
if user != nil || err != nil {
return user, err
}

View File

@@ -30,6 +30,7 @@ import (
"unicode"
"github.com/google/uuid"
"github.com/nyaruka/phonenumbers"
)
func ParseInt(s string) int {
@@ -278,6 +279,19 @@ func GetMaskedPhone(phone string) string {
return rePhone.ReplaceAllString(phone, "$1****$2")
}
func GetSeperatedPhone(phone string) string {
if strings.HasPrefix(phone, "+") {
phoneNumberParsed, err := phonenumbers.Parse(phone, "")
if err != nil {
return phone
}
phone = fmt.Sprintf("%d", phoneNumberParsed.GetNationalNumber())
}
return phone
}
func GetMaskedEmail(email string) string {
if email == "" {
return ""

View File

@@ -19,6 +19,7 @@
"@web3-onboard/gnosis": "^2.1.10",
"@web3-onboard/infinity-wallet": "^2.0.4",
"@web3-onboard/injected-wallets": "^2.10.4",
"@web3-onboard/phantom": "^2.1.1",
"@web3-onboard/react": "^2.8.10",
"@web3-onboard/sequence": "^2.0.8",
"@web3-onboard/taho": "^2.0.5",

View File

@@ -468,6 +468,16 @@ class ApplicationEditPage extends React.Component {
</Select>
</Col>
</Row>
<Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{Setting.getLabel(i18next.t("application:Order"), i18next.t("application:Order - Tooltip"))} :
</Col>
<Col span={22} >
<InputNumber style={{width: "150px"}} value={this.state.application.order} min={0} step={1} precision={0} addonAfter="" onChange={value => {
this.updateApplicationField("order", value);
}} />
</Col>
</Row>
<Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{Setting.getLabel(i18next.t("application:Token expire"), i18next.t("application:Token expire - Tooltip"))} :

View File

@@ -42,10 +42,11 @@ class BaseListPage extends React.Component {
handleOrganizationChange = () => {
this.setState({
organizationName: this.props.match?.params.organizationName || Setting.getRequestOrganization(this.props.account),
},
() => {
const {pagination} = this.state;
this.fetch({pagination});
});
const {pagination} = this.state;
this.fetch({pagination});
};
handleTourChange = () => {

View File

@@ -326,7 +326,7 @@ class UserEditPage extends React.Component {
</Col>
<Col span={22} >
<Select virtual={false} mode="multiple" style={{width: "100%"}} disabled={disabled} value={this.state.user.groups ?? []} onChange={(value => {
if (this.state.groups?.filter(group => value.includes(group.name))
if (this.state.groups?.filter(group => value.includes(`${group.owner}/${group.name}`))
.filter(group => group.type === "Physical").length > 1) {
Setting.showMessage("error", i18next.t("general:You can only select one physical group"));
return;

View File

@@ -39,6 +39,7 @@ import {GoogleOneTapLoginVirtualButton} from "./GoogleLoginButton";
import * as ProviderButton from "./ProviderButton";
import {createFormAndSubmit, goToLink} from "../Setting";
import WeChatLoginPanel from "./WeChatLoginPanel";
import {CountryCodeSelect} from "../common/select/CountryCodeSelect";
const FaceRecognitionCommonModal = lazy(() => import("../common/modal/FaceRecognitionCommonModal"));
const FaceRecognitionModal = lazy(() => import("../common/modal/FaceRecognitionModal"));
@@ -677,6 +678,62 @@ class LoginPage extends React.Component {
if (this.state.loginMethod === "wechat") {
return (<WeChatLoginPanel application={application} loginMethod={this.state.loginMethod} />);
}
if (this.state.loginMethod === "verificationCodePhone") {
return <Form.Item className="signin-phone" required={true}>
<Input.Group compact>
<Form.Item
name="countryCode"
noStyle
rules={[
{
required: true,
message: i18next.t("signup:Please select your country code!"),
},
]}
>
<CountryCodeSelect
style={{width: "35%"}}
countryCodes={this.getApplicationObj().organizationObj.countryCodes}
/>
</Form.Item>
<Form.Item
name="username"
dependencies={["countryCode"]}
noStyle
rules={[
{
required: true,
message: i18next.t("signup:Please input your phone number!"),
},
({getFieldValue}) => ({
validator: (_, value) => {
if (!value) {
return Promise.resolve();
}
if (value && !Setting.isValidPhone(value, getFieldValue("countryCode"))) {
this.setState({validEmailOrPhone: false});
return Promise.reject(i18next.t("signup:The input is not valid Phone!"));
}
this.setState({validEmailOrPhone: true});
return Promise.resolve();
},
}),
]}
>
<Input
className="signup-phone-input"
placeholder={signinItem.placeholder}
style={{width: "65%", textAlign: "left"}}
onChange={e => this.setState({username: e.target.value})}
/>
</Form.Item>
</Input.Group>
</Form.Item>;
}
return (
<div key={resultItemKey}>
<div dangerouslySetInnerHTML={{__html: ("<style>" + signinItem.customCss?.replaceAll("<style>", "").replaceAll("</style>", "") + "</style>")}} />
@@ -1122,11 +1179,13 @@ class LoginPage extends React.Component {
{i18next.t("login:Continue with")}&nbsp;:
</div>
<br />
<SelfLoginButton account={this.props.account} onClick={() => {
<div onClick={() => {
const values = {};
values["application"] = application.name;
this.login(values);
}} />
}}>
<SelfLoginButton account={this.props.account} />
</div>
<br />
<br />
<div style={{fontSize: 16, textAlign: "left"}}>

View File

@@ -392,7 +392,11 @@ export function getAuthUrl(application, provider, method, code) {
let redirectUri = `${redirectOrigin}/callback`;
let scope = authInfo[provider.type].scope;
const isShortState = (provider.type === "WeChat" && navigator.userAgent.includes("MicroMessenger")) || (provider.type === "Twitter");
const state = Util.getStateFromQueryParams(application.name, provider.name, method, isShortState);
let applicationName = application.name;
if (application?.isShared) {
applicationName = `${application.name}-org-${application.organization}`;
}
const state = Util.getStateFromQueryParams(applicationName, provider.name, method, isShortState);
const codeChallenge = "P3S-a7dr8bgM4bF6vOyiKkKETDl16rcAzao9F8UIL1Y"; // SHA256(Base64-URL-encode("casdoor-verifier"))
if (provider.type === "AzureAD") {

View File

@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
import React from "react";
import React, {memo} from "react";
import {createButton} from "react-social-login-buttons";
class SelfLoginButton extends React.Component {
@@ -44,4 +44,4 @@ class SelfLoginButton extends React.Component {
}
}
export default SelfLoginButton;
export default memo(SelfLoginButton);

View File

@@ -27,6 +27,7 @@ import frontierModule from "@web3-onboard/frontier";
import tahoModule from "@web3-onboard/taho";
import coinbaseModule from "@web3-onboard/coinbase";
import gnosisModule from "@web3-onboard/gnosis";
import phantomModule from "@web3-onboard/phantom";
// import keystoneModule from "@web3-onboard/keystone";
// import keepkeyModule from "@web3-onboard/keepkey";
// import dcentModule from "@web3-onboard/dcent";
@@ -172,6 +173,10 @@ const web3Wallets = {
label: "Injected",
wallet: injectedModule(),
},
phantom: {
label: "Phantom",
wallet: phantomModule(),
},
// sdk wallets
coinbase: {
label: "Coinbase",
@@ -296,6 +301,12 @@ export function initWeb3Onboard(application, provider) {
label: "Arbitrum",
rpcUrl: "https://rpc.ankr.com/arbitrum",
},
{
id: "0x1",
token: "SOL",
label: "Solana Mainnet",
rpcUrl: "https://api.mainnet-beta.solana.com",
},
];
const appMetadata = {
@@ -304,6 +315,7 @@ export function initWeb3Onboard(application, provider) {
recommendedInjectedWallets: [
{name: "MetaMask", url: "https://metamask.io"},
{name: "Coinbase", url: "https://www.coinbase.com/wallet"},
{name: "Phantom", url: "https://phantom.app"},
],
};

View File

@@ -19,13 +19,21 @@ import GridCards from "./GridCards";
const AppListPage = (props) => {
const [applications, setApplications] = React.useState(null);
const sort = (applications) => {
applications.sort((a, b) => {
return a.order - b.order;
});
};
React.useEffect(() => {
if (props.account === null) {
return;
}
ApplicationBackend.getApplicationsByOrganization("admin", props.account.owner)
.then((res) => {
setApplications(res.data || []);
const applications = res.data || [];
sort(applications);
setApplications(applications);
});
}, [props.account]);

View File

@@ -92,6 +92,8 @@
"No verification": "لا توجد مصادقة",
"Normal": "عادي",
"Only signup": "التسجيل فقط",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "وضع اختيار المنظمة",
"Org choice mode - Tooltip": "وضع اختيار المنظمة - تلميح",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "يرجى تشغيل \\\"جلسة الدخول\\\" أولاً قبل تشغيل \\\"الدخول التلقائي\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Doğrulama yox",
"Normal": "Normal",
"Only signup": "Yalnız qeydiyyat",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Təşkilat seçim rejimi",
"Org choice mode - Tooltip": "Təşkilat seçim rejimi - Tooltip",
"Please enable \"Signin session\" first before enabling \"Auto signin\"": "\"Avtomatik giriş\"i aktiv etməzdən əvvəl əvvəlcə \"Giriş sessiyası\"nı aktiv edin",

View File

@@ -92,6 +92,8 @@
"No verification": "Žádná verifikace",
"Normal": "Normální",
"Only signup": "Pouze registrace",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Režim výběru organizace",
"Org choice mode - Tooltip": "Režim výběru organizace - popisek",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Nejprve povolte \\\"Přihlašovací relaci\\\" před povolením \\\"Automatického přihlášení\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Keine Verifizierung",
"Normal": "Normal",
"Only signup": "Nur Registrierung",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Organisationsauswahlmodus",
"Org choice mode - Tooltip": "Organisationsauswahlmodus Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Bitte aktivieren Sie zuerst \\\"Anmeldesitzung\\\", bevor Sie \\\"Automatische Anmeldung\\\" aktivieren.",

View File

@@ -92,6 +92,8 @@
"No verification": "No verification",
"Normal": "Normal",
"Only signup": "Only signup",
"Order": "Order",
"Order - Tooltip": "The smaller the value, the higher it ranks in the Apps page",
"Org choice mode": "Org choice mode",
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Sin verificación",
"Normal": "Normal",
"Only signup": "Solo registro",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Modo de selección de organización",
"Org choice mode - Tooltip": "Modo de selección de organización - Información adicional",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Por favor, habilita \\\"Sesión de inicio de sesión\\\" primero antes de habilitar \\\"Inicio de sesión automático\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "بدون تأیید",
"Normal": "عادی",
"Only signup": "فقط ثبت‌نام",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "حالت انتخاب سازمان",
"Org choice mode - Tooltip": "حالت انتخاب سازمان - راهنمای ابزار",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "لطفاً قبل فعال‌سازی «ورود خودکار»، ابتدا «جلسه ورود» را فعال کنید",

View File

@@ -92,6 +92,8 @@
"No verification": "Ei vahvistusta",
"Normal": "Normaali",
"Only signup": "Vain rekisteröityminen",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Organisaation valintatila",
"Org choice mode - Tooltip": "Organisaation valintatila - työkalupala",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Ota \\\"Kirjautumisession\\\" käyttöön ennen \\\"Automaattisen kirjautumisen\\\" ottamista käyttöön",

View File

@@ -92,6 +92,8 @@
"No verification": "Aucune vérification",
"Normal": "Normal",
"Only signup": "Inscription uniquement",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Mode de choix d'organisation",
"Org choice mode - Tooltip": "Mode de choix d'organisation - Infobulle",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Veuillez activer \\\"Session de connexion\\\" avant d'activer \\\"Connexion automatique\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "ללא אימות",
"Normal": "רגיל",
"Only signup": "הרשמה בלבד",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "מצב בחירת ארגון",
"Org choice mode - Tooltip": "מצב בחירת ארגון - תיאור",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "אנא הפעל \\\"פתיחת جلسة כניסה\\\" תחילה לפני הפעלת \\\"כניסה אוטומטית\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Tidak ada verifikasi",
"Normal": "Normal",
"Only signup": "Hanya mendaftar",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Mode pilihan organisasi",
"Org choice mode - Tooltip": "Mode pilihan organisasi - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Harap aktifkan \\\"Sesi masuk\\\" terlebih dahulu sebelum mengaktifkan \\\"Masuk otomatis\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Nessuna verifica",
"Normal": "Normale",
"Only signup": "Solo registrazione",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Modalità scelta organizzazione",
"Org choice mode - Tooltip": "Modalità scelta organizzazione - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Abilita prima \\\"Sessione di accesso\\\" prima di abilitare \\\"Accesso automatico\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "検証なし",
"Normal": "通常",
"Only signup": "サインアップのみ",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "組織選択モード",
"Org choice mode - Tooltip": "組織選択モード - ツールチップ",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "\\\"自動サインイン\\\"を有効にする前に、まず\\\"サインインセッション\\\"を有効にしてください",

View File

@@ -92,6 +92,8 @@
"No verification": "Тексерусіз",
"Normal": "Қалыпты",
"Only signup": "Тек тіркелу",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Ұйым таңдау режимі",
"Org choice mode - Tooltip": "Ұйым таңдау режимі - Қысқаша түсінік",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Автоматты кіруді қосу алдында алдымен \\\"Кіру сессиясын\\\" қосыңыз",

View File

@@ -92,6 +92,8 @@
"No verification": "검증 없음",
"Normal": "일반",
"Only signup": "가입만",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "조직 선택 모드",
"Org choice mode - Tooltip": "조직 선택 모드 - 툴팁",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "\\\"자동 로그인\\\"을 활성화하기 전에 \\\"로그인 세션\\\"을 먼저 활성화하세요.",

View File

@@ -92,6 +92,8 @@
"No verification": "Tiada pengesahan",
"Normal": "Biasa",
"Only signup": "Hanya pendaftaran",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Mod pilihan organisasi",
"Org choice mode - Tooltip": "Mod pilihan organisasi - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Sila dayakan \\\"Sesi log masuk\\\" terlebih dahulu sebelum mendayakan \\\"Log masuk automatik\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Geen verificatie",
"Normal": "Normaal",
"Only signup": "Alleen registratie",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Organisatiekeuzemodus",
"Org choice mode - Tooltip": "Organisatiekeuzemodus - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Schakel eerst \\\"Aanmeldsessie\\\" in voordat je \\\"Automatische aanmelding\\\" inschakelt",

View File

@@ -92,6 +92,8 @@
"No verification": "Brak weryfikacji",
"Normal": "Normalny",
"Only signup": "Tylko rejestracja",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Tryb wyboru organizacji",
"Org choice mode - Tooltip": "Tryb wyboru organizacji - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Najpierw włącz \\\"sesję logowania\\\", zanim włączysz \\\"automatyczne logowanie\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Sem verificação",
"Normal": "Normal",
"Only signup": "Apenas cadastro",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Modo de escolha da organização",
"Org choice mode - Tooltip": "Dica: modo de escolha da organização",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Por favor, habilite a \\\"Sessão de login\\\" primeiro antes de habilitar o \\\"Login automático\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Без проверки",
"Normal": "Обычный",
"Only signup": "Только регистрация",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Режим выбора организации",
"Org choice mode - Tooltip": "Подсказка: режим выбора организации",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Пожалуйста, сначала включите «Сессия входа» перед включением «Автоматического входа»",

View File

@@ -92,6 +92,8 @@
"No verification": "Bez overenia",
"Normal": "Normálny",
"Only signup": "Len registrácia",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Režim výberu organizácie",
"Org choice mode - Tooltip": "Režim výberu organizácie - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Najprv povoľte \\\"Reláciu prihlásenia\\\" pred povolením \\\"Automatického prihlásenia\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Tiada pengesahan",
"Normal": "Biasa",
"Only signup": "Hanya pendaftaran",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Mod pilihan organisasi",
"Org choice mode - Tooltip": "Mod pilihan organisasi - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Sila dayakan \\\"Sesi log masuk\\\" terlebih dahulu sebelum mendayakan \\\"Log masuk automatik\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Doğrulama yok",
"Normal": "Normal",
"Only signup": "Yalnızca kayıt",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Organizasyon seçim modu",
"Org choice mode - Tooltip": "Organizasyon seçim modu - Araç ipucu",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Lütfen \\\"Oturum açma oturumu\\\"nu etkinleştirmeden önce \\\"Otomatik oturum açma\\\"yı etkinleştirin",

View File

@@ -92,6 +92,8 @@
"No verification": "Без підтвердження",
"Normal": "нормальний",
"Only signup": "Тільки реєстрація",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Режим вибору організації",
"Org choice mode - Tooltip": "Режим вибору організації підказка",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Спочатку увімкніть \\\"Сесію входу\\\", перш ніж увімкнути \\\"Автоматичний вхід\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "Không xác minh",
"Normal": "Bình thường",
"Only signup": "Chỉ đăng ký",
"Order": "Order",
"Order - Tooltip": "Order - Tooltip",
"Org choice mode": "Chế độ chọn tổ chức",
"Org choice mode - Tooltip": "Gợi ý chế độ chọn tổ chức",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Vui lòng kích hoạt \\\"Phiên đăng nhập\\\" trước khi kích hoạt \\\"Đăng nhập tự động\\\"",

View File

@@ -92,6 +92,8 @@
"No verification": "不校验",
"Normal": "标准",
"Only signup": "仅注册",
"Order": "Order",
"Order - Tooltip": "数值越小,在应用列表页面中排序越靠前",
"Org choice mode": "组织选择模式",
"Org choice mode - Tooltip": "采用什么方式选择要登录的组织",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "开启 \\\"保持登录会话\\\" 后才能开启 \\\"自动登录\\\"",

View File

@@ -156,6 +156,11 @@
"@0xsequence/transactions" "^0.43.34"
"@0xsequence/utils" "^0.43.34"
"@adraffy/ens-normalize@1.10.0":
version "1.10.0"
resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7"
integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==
"@alloc/quick-lru@^5.2.0":
version "5.2.0"
resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
@@ -3924,11 +3929,28 @@
dependencies:
"@noble/hashes" "1.3.1"
"@noble/curves@1.2.0", "@noble/curves@~1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35"
integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==
dependencies:
"@noble/hashes" "1.3.2"
"@noble/hashes@1.3.1", "@noble/hashes@^1.3.0", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9"
integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==
"@noble/hashes@1.3.2":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39"
integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==
"@noble/hashes@~1.3.2":
version "1.3.3"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699"
integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -4182,6 +4204,11 @@
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938"
integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==
"@scure/base@~1.1.2":
version "1.1.9"
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1"
integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==
"@scure/bip32@1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10"
@@ -4191,6 +4218,15 @@
"@noble/hashes" "~1.3.1"
"@scure/base" "~1.1.0"
"@scure/bip32@1.3.2":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8"
integrity sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==
dependencies:
"@noble/curves" "~1.2.0"
"@noble/hashes" "~1.3.2"
"@scure/base" "~1.1.2"
"@scure/bip39@1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a"
@@ -5319,6 +5355,14 @@
ethers "5.5.4"
joi "17.9.1"
"@web3-onboard/common@^2.4.1":
version "2.4.2"
resolved "https://registry.yarnpkg.com/@web3-onboard/common/-/common-2.4.2.tgz#ffa7b1a7cb6410d9cc4d7b38d50b97a857b334cb"
integrity sha512-3+zkBru5W2jBYFBPPQsnqZ7tuN1GUyM5PzD9/MmhvjCLNhmjFtMQ0MkLzG4Yshodb4UW/DmZpjUVrpjdhEhj/Q==
dependencies:
joi "17.9.1"
viem "2.12.0"
"@web3-onboard/core@^2.20.5":
version "2.20.5"
resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.20.5.tgz#78bf125d0ffea38642046a383bfb869c66b49457"
@@ -5370,6 +5414,13 @@
joi "17.9.1"
lodash.uniqby "^4.7.0"
"@web3-onboard/phantom@^2.1.1":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@web3-onboard/phantom/-/phantom-2.1.1.tgz#c7274c065a2134a2e27a8ed7ea8c4d74e665cd63"
integrity sha512-OXDeUpqrZK7zi8CSgCZXlEzppo9mCGm/e3ksQUiffud1ug5lvj+FtuNr1hJBuuIJQ4QnT2zCbM2PZkLOcnETBg==
dependencies:
"@web3-onboard/common" "^2.4.1"
"@web3-onboard/react@^2.8.10":
version "2.8.10"
resolved "https://registry.yarnpkg.com/@web3-onboard/react/-/react-2.8.10.tgz#05ee27a95efa3243b8674fb15efab4614900880f"
@@ -5559,6 +5610,11 @@ abab@^2.0.3, abab@^2.0.5:
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
abitype@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97"
integrity sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
@@ -10095,6 +10151,11 @@ isomorphic-ws@^4.0.1:
resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc"
integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==
isows@1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.4.tgz#810cd0d90cc4995c26395d2aa4cfa4037ebdf061"
integrity sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -15432,6 +15493,20 @@ verror@1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
viem@2.12.0:
version "2.12.0"
resolved "https://registry.yarnpkg.com/viem/-/viem-2.12.0.tgz#699ba326a1ce0df81042dc8b6f22fa751f9cefce"
integrity sha512-XBvORspE4x2/gfy7idH6IVFwkJiXirygFCU3lxUH6fttsj8zufLtgiokfvZF/LAZUEDvdxSgL08whSYgffM2fw==
dependencies:
"@adraffy/ens-normalize" "1.10.0"
"@noble/curves" "1.2.0"
"@noble/hashes" "1.3.2"
"@scure/bip32" "1.3.2"
"@scure/bip39" "1.2.1"
abitype "1.0.0"
isows "1.0.4"
ws "8.13.0"
void-elements@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09"
@@ -15961,16 +16036,16 @@ ws@7.4.6:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
ws@8.13.0, ws@^8.13.0, ws@^8.5.0:
version "8.13.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
ws@^7.4.5, ws@^7.4.6:
version "7.5.9"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
ws@^8.13.0, ws@^8.5.0:
version "8.13.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
xml-name-validator@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"