chore: Rename for consistency

This commit is contained in:
Maksim Eltyshev
2026-01-13 17:52:31 +01:00
parent f4a24a3c1f
commit a60f8e3c3e
49 changed files with 68 additions and 68 deletions
@@ -38,8 +38,8 @@ const StepTypes = {
const ActionsStep = React.memo(({ userId, onClose }) => { const ActionsStep = React.memo(({ userId, onClose }) => {
const selectUserById = useMemo(() => selectors.makeSelectUserById(), []); const selectUserById = useMemo(() => selectors.makeSelectUserById(), []);
const activeUsersLimit = useSelector(selectors.selectActiveUsersLimit); const activeUserLimit = useSelector(selectors.selectActiveUserLimit);
const activeUsersTotal = useSelector(selectors.selectActiveUsersTotal); const activeUserTotal = useSelector(selectors.selectActiveUserTotal);
const user = useSelector((state) => selectUserById(state, userId)); const user = useSelector((state) => selectUserById(state, userId));
const isCurrentUser = useSelector((state) => user.id === selectors.selectCurrentUserId(state)); const isCurrentUser = useSelector((state) => user.id === selectors.selectCurrentUserId(state));
@@ -237,8 +237,8 @@ const ActionsStep = React.memo(({ userId, onClose }) => {
<Menu.Item <Menu.Item
disabled={ disabled={
user.isDeactivated && user.isDeactivated &&
activeUsersLimit !== null && activeUserLimit !== null &&
activeUsersTotal >= activeUsersLimit activeUserTotal >= activeUserLimit
} }
className={styles.menuItem} className={styles.menuItem}
onClick={user.isDeactivated ? handleActivateClick : handleDeactivateClick} onClick={user.isDeactivated ? handleActivateClick : handleDeactivateClick}
@@ -17,8 +17,8 @@ import AddStep from './AddStep';
import styles from './UsersPane.module.scss'; import styles from './UsersPane.module.scss';
const UsersPane = React.memo(() => { const UsersPane = React.memo(() => {
const activeUsersTotal = useSelector(selectors.selectActiveUsersTotal); const activeUserTotal = useSelector(selectors.selectActiveUserTotal);
const activeUsersLimit = useSelector(selectors.selectActiveUsersLimit); const activeUserLimit = useSelector(selectors.selectActiveUserLimit);
const users = useSelector(selectors.selectUsers); const users = useSelector(selectors.selectUsers);
const canAdd = useSelector((state) => { const canAdd = useSelector((state) => {
@@ -106,13 +106,13 @@ const UsersPane = React.memo(() => {
<AddPopup> <AddPopup>
<Button <Button
positive positive
disabled={activeUsersLimit !== null && activeUsersTotal >= activeUsersLimit} disabled={activeUserLimit !== null && activeUserTotal >= activeUserLimit}
className={styles.addButton} className={styles.addButton}
> >
{t('action.addUser')} {t('action.addUser')}
{activeUsersLimit !== null && ( {activeUserLimit !== null && (
<span className={styles.addButtonCounter}> <span className={styles.addButtonCounter}>
{activeUsersTotal}/{activeUsersLimit} {activeUserTotal}/{activeUserLimit}
</span> </span>
)} )}
</Button> </Button>
@@ -64,10 +64,10 @@ const createMessage = (error) => {
type: 'error', type: 'error',
content: 'common.usernameAlreadyInUse', content: 'common.usernameAlreadyInUse',
}; };
case 'Active users limit reached': case 'Active user limit reached':
return { return {
type: 'error', type: 'error',
content: 'common.activeUsersLimitReached', content: 'common.activeUserLimitReached',
}; };
case 'Failed to fetch': case 'Failed to fetch':
return { return {
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'تم الوصول إلى حد المستخدمين النشطين', activeUserLimitReached: 'تم الوصول إلى حد المستخدمين النشطين',
adminLoginRequiredToInitializeInstance: 'مطلوب تسجيل دخول المدير لتهيئة المثيل', adminLoginRequiredToInitializeInstance: 'مطلوب تسجيل دخول المدير لتهيئة المثيل',
emailAlreadyInUse: 'البريد الإلكتروني مستخدم بالفعل', emailAlreadyInUse: 'البريد الإلكتروني مستخدم بالفعل',
emailOrUsername: 'البريد الإلكتروني أو اسم المستخدم', emailOrUsername: 'البريد الإلكتروني أو اسم المستخدم',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Достигнат е лимитът на активни потребители', activeUserLimitReached: 'Достигнат е лимитът на активни потребители',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Необходимо е влизане на администратор за инициализиране на инстанцията', 'Необходимо е влизане на администратор за инициализиране на инстанцията',
emailAlreadyInUse: 'Имейлът вече се използва', emailAlreadyInUse: 'Имейлът вече се използва',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: "S'ha assolit el límit d'usuaris actius", activeUserLimitReached: "S'ha assolit el límit d'usuaris actius",
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
"Es requereix inici de sessió d'administrador per inicialitzar la instància", "Es requereix inici de sessió d'administrador per inicialitzar la instància",
emailAlreadyInUse: 'Correu electrònic ja en ús', emailAlreadyInUse: 'Correu electrònic ja en ús',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Dosažený limit aktivních uživatelů', activeUserLimitReached: 'Dosažený limit aktivních uživatelů',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'K inicializaci instance je nutné přihlášení správce.', 'K inicializaci instance je nutné přihlášení správce.',
emailAlreadyInUse: 'E-mail se již používá', emailAlreadyInUse: 'E-mail se již používá',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Grænsen for aktive brugere er nået', activeUserLimitReached: 'Grænsen for aktive brugere er nået',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Administrator login påkrævet for at initialisere instans', 'Administrator login påkrævet for at initialisere instans',
emailAlreadyInUse: 'E-mail allerede i brug', emailAlreadyInUse: 'E-mail allerede i brug',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Maximale Anzahl aktiver Benutzer erreicht', activeUserLimitReached: 'Maximale Anzahl aktiver Benutzer erreicht',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Admin-Anmeldung erforderlich zur Initialisierung der Instanz', 'Admin-Anmeldung erforderlich zur Initialisierung der Instanz',
emailAlreadyInUse: 'E-mail Adresse wird bereits benutzt', emailAlreadyInUse: 'E-mail Adresse wird bereits benutzt',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Έχει επιτευχθεί το όριο ενεργών χρηστών', activeUserLimitReached: 'Έχει επιτευχθεί το όριο ενεργών χρηστών',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Απαιτείται σύνδεση διαχειριστή για την αρχικοποίηση της εφαρμογής', 'Απαιτείται σύνδεση διαχειριστή για την αρχικοποίηση της εφαρμογής',
emailAlreadyInUse: 'Το e-mail χρησιμοποιείται ήδη', emailAlreadyInUse: 'Το e-mail χρησιμοποιείται ήδη',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Active users limit reached', activeUserLimitReached: 'Active user limit reached',
adminLoginRequiredToInitializeInstance: 'Admin login required to initialize instance', adminLoginRequiredToInitializeInstance: 'Admin login required to initialize instance',
emailAlreadyInUse: 'E-mail already in use', emailAlreadyInUse: 'E-mail already in use',
emailOrUsername: 'E-mail or username', emailOrUsername: 'E-mail or username',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Active users limit reached', activeUserLimitReached: 'Active user limit reached',
adminLoginRequiredToInitializeInstance: 'Admin login required to initialize instance', adminLoginRequiredToInitializeInstance: 'Admin login required to initialize instance',
emailAlreadyInUse: 'E-mail already in use', emailAlreadyInUse: 'E-mail already in use',
emailOrUsername: 'E-mail or username', emailOrUsername: 'E-mail or username',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Se ha alcanzado el límite de usuarios activos', activeUserLimitReached: 'Se ha alcanzado el límite de usuarios activos',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Se requiere inicio de sesión de administrador para inicializar la instancia', 'Se requiere inicio de sesión de administrador para inicializar la instancia',
emailAlreadyInUse: 'Correo electrónico ya en uso', emailAlreadyInUse: 'Correo electrónico ya en uso',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Aktiivsete kasutajate limiit on täis', activeUserLimitReached: 'Aktiivsete kasutajate limiit on täis',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Administraatori sisselogimine on vajalik rakenduse käivitamiseks', 'Administraatori sisselogimine on vajalik rakenduse käivitamiseks',
emailAlreadyInUse: 'E-post on juba kasutusel', emailAlreadyInUse: 'E-post on juba kasutusel',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'حد کاربران فعال به پایان رسیده است', activeUserLimitReached: 'حد کاربران فعال به پایان رسیده است',
adminLoginRequiredToInitializeInstance: 'ورود مدیر برای راه‌اندازی نمونه مورد نیاز است', adminLoginRequiredToInitializeInstance: 'ورود مدیر برای راه‌اندازی نمونه مورد نیاز است',
emailAlreadyInUse: 'ایمیل قبلا استفاده شده است', emailAlreadyInUse: 'ایمیل قبلا استفاده شده است',
emailOrUsername: 'ایمیل یا نام کاربری', emailOrUsername: 'ایمیل یا نام کاربری',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Aktiivisten käyttäjien raja saavutettu', activeUserLimitReached: 'Aktiivisten käyttäjien raja saavutettu',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Järjestelmänvalvojan kirjautuminen vaaditaan instanssin alustamiseksi', 'Järjestelmänvalvojan kirjautuminen vaaditaan instanssin alustamiseksi',
emailAlreadyInUse: 'Sähköposti on jo käytössä', emailAlreadyInUse: 'Sähköposti on jo käytössä',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'La limite d’utilisateurs actifs a été atteinte', activeUserLimitReached: 'La limite d’utilisateurs actifs a été atteinte',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
"Connexion administrateur requise pour initialiser l'instance", "Connexion administrateur requise pour initialiser l'instance",
emailAlreadyInUse: 'E-mail déjà utilisé', emailAlreadyInUse: 'E-mail déjà utilisé',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Aktív felhasználók korlátja elérve', activeUserLimitReached: 'Aktív felhasználók korlátja elérve',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Rendszergazdai bejelentkezés szükséges a példány inicializálásához', 'Rendszergazdai bejelentkezés szükséges a példány inicializálásához',
emailAlreadyInUse: 'Az e-mail cím már használatban van', emailAlreadyInUse: 'Az e-mail cím már használatban van',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Batas pengguna aktif tercapai', activeUserLimitReached: 'Batas pengguna aktif tercapai',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Login admin diperlukan untuk menginisialisasi instance', 'Login admin diperlukan untuk menginisialisasi instance',
emailAlreadyInUse: 'E-mail telah digunakan', emailAlreadyInUse: 'E-mail telah digunakan',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Limite utenti attivi raggiunto', activeUserLimitReached: 'Limite utenti attivi raggiunto',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
"Login amministratore richiesto per inizializzare l'istanza", "Login amministratore richiesto per inizializzare l'istanza",
emailAlreadyInUse: 'E-mail già in uso', emailAlreadyInUse: 'E-mail già in uso',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'アクティブユーザーの上限に達しました', activeUserLimitReached: 'アクティブユーザーの上限に達しました',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'インスタンスを初期化するには管理者ログインが必要です', 'インスタンスを初期化するには管理者ログインが必要です',
emailAlreadyInUse: 'Eメールは既に使われています', emailAlreadyInUse: 'Eメールは既に使われています',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: '활성 사용자 한도에 도달했습니다', activeUserLimitReached: '활성 사용자 한도에 도달했습니다',
adminLoginRequiredToInitializeInstance: '인스턴스 초기화를 위해 관리자 로그인이 필요합니다', adminLoginRequiredToInitializeInstance: '인스턴스 초기화를 위해 관리자 로그인이 필요합니다',
emailAlreadyInUse: '이미 사용 중인 이메일', emailAlreadyInUse: '이미 사용 중인 이메일',
emailOrUsername: '이메일 또는 사용자 이름', emailOrUsername: '이메일 또는 사용자 이름',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Limiet voor actieve gebruikers bereikt', activeUserLimitReached: 'Limiet voor actieve gebruikers bereikt',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Beheerder login vereist om instantie te initialiseren', 'Beheerder login vereist om instantie te initialiseren',
emailAlreadyInUse: 'E-mail is al in gebruik', emailAlreadyInUse: 'E-mail is al in gebruik',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Osiągnięto limit aktywnych użytkowników', activeUserLimitReached: 'Osiągnięto limit aktywnych użytkowników',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Wymagane logowanie administratora do inicjalizacji instancji', 'Wymagane logowanie administratora do inicjalizacji instancji',
emailAlreadyInUse: 'E-mail jest już używany', emailAlreadyInUse: 'E-mail jest już używany',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Limite de usuários ativos atingido', activeUserLimitReached: 'Limite de usuários ativos atingido',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Login de administrador necessário para inicializar a instância', 'Login de administrador necessário para inicializar a instância',
emailAlreadyInUse: 'E-mail já está em uso', emailAlreadyInUse: 'E-mail já está em uso',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Limite de utilizadores activos atingido', activeUserLimitReached: 'Limite de utilizadores activos atingido',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Início de sessão de administrador necessário para inicializar a instância', 'Início de sessão de administrador necessário para inicializar a instância',
emailAlreadyInUse: 'E-mail já está em uso', emailAlreadyInUse: 'E-mail já está em uso',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Limita utilizatorilor activi a fost atinsă', activeUserLimitReached: 'Limita utilizatorilor activi a fost atinsă',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Este necesară autentificarea administratorului pentru a inițializa instanța', 'Este necesară autentificarea administratorului pentru a inițializa instanța',
emailAlreadyInUse: 'E-mail deja utilizat', emailAlreadyInUse: 'E-mail deja utilizat',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Достигнут лимит активных пользователей', activeUserLimitReached: 'Достигнут лимит активных пользователей',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Требуется вход администратора для инициализации экземпляра', 'Требуется вход администратора для инициализации экземпляра',
emailAlreadyInUse: 'E-mail уже занят', emailAlreadyInUse: 'E-mail уже занят',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Limit aktívnych používateľov bol dosiahnutý', activeUserLimitReached: 'Limit aktívnych používateľov bol dosiahnutý',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Na inicializáciu inštancie je potrebné prihlásenie správcu', 'Na inicializáciu inštancie je potrebné prihlásenie správcu',
emailAlreadyInUse: 'E-mail je už použitý', emailAlreadyInUse: 'E-mail je už použitý',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Достигнут је лимит активних корисника', activeUserLimitReached: 'Достигнут је лимит активних корисника',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Потребна је администраторска пријава за иницијализацију инстанце', 'Потребна је администраторска пријава за иницијализацију инстанце',
emailAlreadyInUse: 'Е-пошта је већ у употреби', emailAlreadyInUse: 'Е-пошта је већ у употреби',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Dostignut je limit aktivnih korisnika', activeUserLimitReached: 'Dostignut je limit aktivnih korisnika',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Potrebna je administratorska prijava za inicijalizaciju instance', 'Potrebna je administratorska prijava za inicijalizaciju instance',
emailAlreadyInUse: 'E-pošta je već u upotrebi', emailAlreadyInUse: 'E-pošta je već u upotrebi',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Gränsen för aktiva användare har nåtts', activeUserLimitReached: 'Gränsen för aktiva användare har nåtts',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Administratörsinloggning krävs för att initiera instansen', 'Administratörsinloggning krävs för att initiera instansen',
emailAlreadyInUse: 'E-mail används redan', emailAlreadyInUse: 'E-mail används redan',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Aktif kullanıcı sınırına ulaşıldı', activeUserLimitReached: 'Aktif kullanıcı sınırına ulaşıldı',
adminLoginRequiredToInitializeInstance: 'Örneği başlatmak için yönetici girişi gerekli', adminLoginRequiredToInitializeInstance: 'Örneği başlatmak için yönetici girişi gerekli',
emailAlreadyInUse: 'E-posta adresi zaten kullanımda', emailAlreadyInUse: 'E-posta adresi zaten kullanımda',
emailOrUsername: 'E-posta adresi veya kullanıcı adı', emailOrUsername: 'E-posta adresi veya kullanıcı adı',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Досягнуто ліміту активних користувачів', activeUserLimitReached: 'Досягнуто ліміту активних користувачів',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Потрібен вхід адміністратора для ініціалізації екземпляра', 'Потрібен вхід адміністратора для ініціалізації екземпляра',
emailAlreadyInUse: 'Електронна пошта вже використовується', emailAlreadyInUse: 'Електронна пошта вже використовується',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Faol foydalanuvchilar chegarasiga yetildi', activeUserLimitReached: 'Faol foydalanuvchilar chegarasiga yetildi',
adminLoginRequiredToInitializeInstance: adminLoginRequiredToInitializeInstance:
'Tizimni ishga tushirish uchun admin kirishi talab qilinadi', 'Tizimni ishga tushirish uchun admin kirishi talab qilinadi',
emailAlreadyInUse: 'E-mail allaqachon mavjud', emailAlreadyInUse: 'E-mail allaqachon mavjud',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: 'Đã đạt giới hạn người dùng hoạt động', activeUserLimitReached: 'Đã đạt giới hạn người dùng hoạt động',
adminLoginRequiredToInitializeInstance: 'Cần đăng nhập quản trị để khởi tạo phiên bản', adminLoginRequiredToInitializeInstance: 'Cần đăng nhập quản trị để khởi tạo phiên bản',
emailAlreadyInUse: 'E-mail đã được sử dụng', emailAlreadyInUse: 'E-mail đã được sử dụng',
emailOrUsername: 'E-mail hoặc tên đăng nhập', emailOrUsername: 'E-mail hoặc tên đăng nhập',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: '活跃用户数已达上限', activeUserLimitReached: '活跃用户数已达上限',
adminLoginRequiredToInitializeInstance: '需要管理员登录以初始化实例', adminLoginRequiredToInitializeInstance: '需要管理员登录以初始化实例',
emailAlreadyInUse: '邮箱已使用', emailAlreadyInUse: '邮箱已使用',
emailOrUsername: '邮箱或用户名', emailOrUsername: '邮箱或用户名',
+1 -1
View File
@@ -1,7 +1,7 @@
export default { export default {
translation: { translation: {
common: { common: {
activeUsersLimitReached: '活躍使用者數已達上限', activeUserLimitReached: '活躍使用者數已達上限',
adminLoginRequiredToInitializeInstance: '需要管理員登入以初始化實例', adminLoginRequiredToInitializeInstance: '需要管理員登入以初始化實例',
emailAlreadyInUse: '郵箱已被使用', emailAlreadyInUse: '郵箱已被使用',
emailOrUsername: '郵箱或使用者名稱', emailOrUsername: '郵箱或使用者名稱',
+2 -2
View File
@@ -11,7 +11,7 @@ export const selectBootstrap = ({ common: { bootstrap } }) => bootstrap;
export const selectOidcBootstrap = (state) => selectBootstrap(state).oidc; export const selectOidcBootstrap = (state) => selectBootstrap(state).oidc;
export const selectActiveUsersLimit = (state) => selectBootstrap(state).activeUsersLimit; export const selectActiveUserLimit = (state) => selectBootstrap(state).activeUserLimit;
export const selectAccessToken = ({ auth: { accessToken } }) => accessToken; export const selectAccessToken = ({ auth: { accessToken } }) => accessToken;
@@ -28,7 +28,7 @@ export default {
selectIsInitializing, selectIsInitializing,
selectBootstrap, selectBootstrap,
selectOidcBootstrap, selectOidcBootstrap,
selectActiveUsersLimit, selectActiveUserLimit,
selectAccessToken, selectAccessToken,
selectAuthenticateForm, selectAuthenticateForm,
selectUserCreateForm, selectUserCreateForm,
+2 -2
View File
@@ -51,7 +51,7 @@ export const selectActiveUsers = createSelector(orm, ({ User }) =>
User.getActiveQuerySet().toRefArray(), User.getActiveQuerySet().toRefArray(),
); );
export const selectActiveUsersTotal = createSelector(orm, ({ User }) => export const selectActiveUserTotal = createSelector(orm, ({ User }) =>
User.getActiveQuerySet().count(), User.getActiveQuerySet().count(),
); );
@@ -347,7 +347,7 @@ export default {
selectCurrentUserId, selectCurrentUserId,
selectUsers, selectUsers,
selectActiveUsers, selectActiveUsers,
selectActiveUsersTotal, selectActiveUserTotal,
selectActiveAdminOrProjectOwnerUsers, selectActiveAdminOrProjectOwnerUsers,
selectCurrentUser, selectCurrentUser,
selectProjectIdsForCurrentUser, selectProjectIdsForCurrentUser,
+1 -1
View File
@@ -42,7 +42,7 @@ services:
# - INTERNAL_ACCESS_TOKEN= # - INTERNAL_ACCESS_TOKEN=
# - STORAGE_LIMIT= # - STORAGE_LIMIT=
# - ACTIVE_USERS_LIMIT= # - ACTIVE_USER_LIMIT=
# - CUSTOMER_PANEL_URL= # - CUSTOMER_PANEL_URL=
# Set to true to show more detailed authentication error messages. # Set to true to show more detailed authentication error messages.
+1 -1
View File
@@ -56,7 +56,7 @@ services:
# - INTERNAL_ACCESS_TOKEN= # - INTERNAL_ACCESS_TOKEN=
# - STORAGE_LIMIT= # - STORAGE_LIMIT=
# - ACTIVE_USERS_LIMIT= # - ACTIVE_USER_LIMIT=
# - CUSTOMER_PANEL_URL= # - CUSTOMER_PANEL_URL=
# Set to true to show more detailed authentication error messages. # Set to true to show more detailed authentication error messages.
+1 -1
View File
@@ -33,7 +33,7 @@ SECRET_KEY=notsecretkey
# INTERNAL_ACCESS_TOKEN= # INTERNAL_ACCESS_TOKEN=
# STORAGE_LIMIT= # STORAGE_LIMIT=
# ACTIVE_USERS_LIMIT= # ACTIVE_USER_LIMIT=
# CUSTOMER_PANEL_URL= # CUSTOMER_PANEL_URL=
# Set to true to show more detailed authentication error messages. # Set to true to show more detailed authentication error messages.
@@ -119,7 +119,7 @@
* enum: * enum:
* - Email already in use * - Email already in use
* - Username already in use * - Username already in use
* - Active users limit reached * - Active user limit reached
* description: Specific error message * description: Specific error message
* example: Email already in use * example: Email already in use
* 422: * 422:
@@ -182,8 +182,8 @@ const Errors = {
USERNAME_ALREADY_IN_USE: { USERNAME_ALREADY_IN_USE: {
usernameAlreadyInUse: 'Username already in use', usernameAlreadyInUse: 'Username already in use',
}, },
ACTIVE_USERS_LIMIT_REACHED: { ACTIVE_USER_LIMIT_REACHED: {
activeUsersLimitReached: 'Active users limit reached', activeUserLimitReached: 'Active user limit reached',
}, },
MISSING_VALUES: { MISSING_VALUES: {
missingValues: 'Unable to retrieve required values (email, name)', missingValues: 'Unable to retrieve required values (email, name)',
@@ -229,7 +229,7 @@ module.exports = {
usernameAlreadyInUse: { usernameAlreadyInUse: {
responseType: 'conflict', responseType: 'conflict',
}, },
activeUsersLimitReached: { activeUserLimitReached: {
responseType: 'conflict', responseType: 'conflict',
}, },
missingValues: { missingValues: {
@@ -250,7 +250,7 @@ module.exports = {
.intercept('invalidUserinfoConfiguration', () => Errors.INVALID_USERINFO_CONFIGURATION) .intercept('invalidUserinfoConfiguration', () => Errors.INVALID_USERINFO_CONFIGURATION)
.intercept('emailAlreadyInUse', () => Errors.EMAIL_ALREADY_IN_USE) .intercept('emailAlreadyInUse', () => Errors.EMAIL_ALREADY_IN_USE)
.intercept('usernameAlreadyInUse', () => Errors.USERNAME_ALREADY_IN_USE) .intercept('usernameAlreadyInUse', () => Errors.USERNAME_ALREADY_IN_USE)
.intercept('activeLimitReached', () => Errors.ACTIVE_USERS_LIMIT_REACHED) .intercept('activeLimitReached', () => Errors.ACTIVE_USER_LIMIT_REACHED)
.intercept('missingValues', () => Errors.MISSING_VALUES); .intercept('missingValues', () => Errors.MISSING_VALUES);
return sails.helpers.accessTokens.handleSteps return sails.helpers.accessTokens.handleSteps
+1 -1
View File
@@ -47,7 +47,7 @@
* type: boolean * type: boolean
* description: Whether OIDC authentication is enforced (users must use OIDC to login) * description: Whether OIDC authentication is enforced (users must use OIDC to login)
* example: false * example: false
* activeUsersLimit: * activeUserLimit:
* type: number * type: number
* nullable: true * nullable: true
* description: Maximum number of active users allowed (conditionally added for admins if configured) * description: Maximum number of active users allowed (conditionally added for admins if configured)
+1 -1
View File
@@ -22,7 +22,7 @@ module.exports = {
}; };
if (inputs.user && inputs.user.role === User.Roles.ADMIN) { if (inputs.user && inputs.user.role === User.Roles.ADMIN) {
Object.assign(data, { Object.assign(data, {
activeUsersLimit: sails.config.custom.activeUsersLimit, activeUserLimit: sails.config.custom.activeUserLimit,
customerPanelUrl: sails.config.custom.customerPanelUrl, customerPanelUrl: sails.config.custom.customerPanelUrl,
}); });
} }
@@ -25,7 +25,7 @@ const defaultFind = (criteria) => User.find(criteria).sort('id');
/* Query methods */ /* Query methods */
const createOne = (values) => { const createOne = (values) => {
if (sails.config.custom.activeUsersLimit !== null) { if (sails.config.custom.activeUserLimit !== null) {
return sails.getDatastore().transaction(async (db) => { return sails.getDatastore().transaction(async (db) => {
const queryResult = await sails const queryResult = await sails
.sendNativeQuery('SELECT NULL FROM user_account WHERE is_deactivated = $1 FOR UPDATE', [ .sendNativeQuery('SELECT NULL FROM user_account WHERE is_deactivated = $1 FOR UPDATE', [
@@ -33,7 +33,7 @@ const createOne = (values) => {
]) ])
.usingConnection(db); .usingConnection(db);
if (queryResult.rowCount >= sails.config.custom.activeUsersLimit) { if (queryResult.rowCount >= sails.config.custom.activeUserLimit) {
throw 'activeLimitReached'; throw 'activeLimitReached';
} }
@@ -87,7 +87,7 @@ const getOneActiveByApiKeyHash = (apiKeyHash) =>
const updateOne = async (criteria, values) => { const updateOne = async (criteria, values) => {
const enforceActiveLimit = const enforceActiveLimit =
values.isDeactivated === false && sails.config.custom.activeUsersLimit !== null; values.isDeactivated === false && sails.config.custom.activeUserLimit !== null;
if (!_.isUndefined(values.avatar) || enforceActiveLimit) { if (!_.isUndefined(values.avatar) || enforceActiveLimit) {
return sails.getDatastore().transaction(async (db) => { return sails.getDatastore().transaction(async (db) => {
@@ -98,7 +98,7 @@ const updateOne = async (criteria, values) => {
]) ])
.usingConnection(db); .usingConnection(db);
if (queryResult.rowCount >= sails.config.custom.activeUsersLimit) { if (queryResult.rowCount >= sails.config.custom.activeUserLimit) {
throw 'activeLimitReached'; throw 'activeLimitReached';
} }
} }
+1 -1
View File
@@ -61,7 +61,7 @@ module.exports.custom = {
internalAccessToken: process.env.INTERNAL_ACCESS_TOKEN, internalAccessToken: process.env.INTERNAL_ACCESS_TOKEN,
storageLimit: envToBytes(process.env.STORAGE_LIMIT), storageLimit: envToBytes(process.env.STORAGE_LIMIT),
activeUsersLimit: envToNumber(process.env.ACTIVE_USERS_LIMIT), activeUserLimit: envToNumber(process.env.ACTIVE_USER_LIMIT),
customerPanelUrl: process.env.CUSTOMER_PANEL_URL, customerPanelUrl: process.env.CUSTOMER_PANEL_URL,
showDetailedAuthErrors: process.env.SHOW_DETAILED_AUTH_ERRORS === 'true', showDetailedAuthErrors: process.env.SHOW_DETAILED_AUTH_ERRORS === 'true',
+3 -3
View File
@@ -57,9 +57,9 @@ exports.seed = async (knex) => {
} }
} }
const activeUsersLimit = parseInt(process.env.ACTIVE_USERS_LIMIT, 10); const activeUserLimit = parseInt(process.env.ACTIVE_USER_LIMIT, 10);
if (!Number.isNaN(activeUsersLimit)) { if (!Number.isNaN(activeUserLimit)) {
let orderByQuery; let orderByQuery;
let orderByQueryValues; let orderByQueryValues;
@@ -76,7 +76,7 @@ exports.seed = async (knex) => {
.where('is_deactivated', false) .where('is_deactivated', false)
.orderByRaw(orderByQuery, orderByQueryValues) .orderByRaw(orderByQuery, orderByQueryValues)
.orderBy('id') .orderBy('id')
.offset(activeUsersLimit); .offset(activeUserLimit);
if (users.length > 0) { if (users.length > 0) {
const userIds = users.map(({ id }) => id); const userIds = users.map(({ id }) => id);