feat: Remove OIDC and SSO support

Existing SSO accounts have no local password, so the migration
deactivates them before dropping is_sso_user and the
identity_provider_user table.
This commit is contained in:
Daniel Hiller
2026-08-07 19:15:43 +02:00
parent a1f0a2b3fa
commit 36aa732fec
128 changed files with 121 additions and 1993 deletions
-28
View File
@@ -34,33 +34,6 @@ authenticate.failure = (error, terms) => ({
},
});
const authenticateWithOidc = () => ({
type: ActionTypes.WITH_OIDC_AUTHENTICATE,
payload: {},
});
authenticateWithOidc.success = (accessToken) => ({
type: ActionTypes.WITH_OIDC_AUTHENTICATE__SUCCESS,
payload: {
accessToken,
},
});
authenticateWithOidc.failure = (error, terms) => ({
type: ActionTypes.WITH_OIDC_AUTHENTICATE__FAILURE,
payload: {
error,
terms,
},
});
authenticateWithOidc.debug = (logs) => ({
type: ActionTypes.WITH_OIDC_AUTHENTICATE__DEBUG,
payload: {
logs,
},
});
const clearAuthenticateError = () => ({
type: ActionTypes.AUTHENTICATE_ERROR_CLEAR,
payload: {},
@@ -128,7 +101,6 @@ updateTermsLanguage.failure = (error) => ({
export default {
initializeLogin,
authenticate,
authenticateWithOidc,
clearAuthenticateError,
acceptTerms,
cancelTerms,
-7
View File
@@ -10,11 +10,6 @@ import http from './http';
const createAccessToken = (data, headers) =>
http.post('/access-tokens?withHttpOnlyToken=true', data, headers);
const exchangeForAccessTokenWithOidc = (data, headers) =>
http.post('/access-tokens/exchange-with-oidc?withHttpOnlyToken=true', data, headers);
const debugOidc = (data, headers) => http.post('/access-tokens/debug-oidc', data, headers);
// TODO: rename?
const acceptTerms = (data, headers) => http.post('/access-tokens/accept-terms', data, headers);
@@ -25,8 +20,6 @@ const deleteCurrentAccessToken = (headers) => http.delete('/access-tokens/me', u
export default {
createAccessToken,
exchangeForAccessTokenWithOidc,
debugOidc,
acceptTerms,
revokePendingToken,
deleteCurrentAccessToken,
@@ -32,7 +32,6 @@ const StepTypes = {
EDIT_PASSWORD: 'EDIT_PASSWORD',
EDIT_ROLE: 'EDIT_ROLE',
API_KEY: 'API_KEY',
UNLINK_SSO: 'UNLINK_SSO',
ACTIVATE: 'ACTIVATE',
DEACTIVATE: 'DEACTIVATE',
DELETE: 'DELETE',
@@ -61,16 +60,6 @@ const ActionsStep = React.memo(({ userId, onClose }) => {
[userId, dispatch],
);
const handleUnlinkSsoConfirm = useCallback(() => {
dispatch(
entryActions.updateUser(userId, {
isSsoUser: false,
}),
);
onClose();
}, [userId, onClose, dispatch]);
const handleActivateConfirm = useCallback(() => {
dispatch(
entryActions.updateUser(userId, {
@@ -123,10 +112,6 @@ const ActionsStep = React.memo(({ userId, onClose }) => {
openStep(StepTypes.API_KEY);
}, [openStep]);
const handleUnlinkSsoClick = useCallback(() => {
openStep(StepTypes.UNLINK_SSO);
}, [openStep]);
const handleActivateClick = useCallback(() => {
openStep(StepTypes.ACTIVATE);
}, [openStep]);
@@ -165,16 +150,6 @@ const ActionsStep = React.memo(({ userId, onClose }) => {
);
case StepTypes.API_KEY:
return <ApiKeyStep userId={userId} onBack={handleBack} onClose={onClose} />;
case StepTypes.UNLINK_SSO:
return (
<ConfirmationStep
title="common.unlinkSso"
content="common.areYouSureYouWantToUnlinkSsoFromThisUser"
buttonContent="action.unlinkSso"
onConfirm={handleUnlinkSsoConfirm}
onBack={handleBack}
/>
);
case StepTypes.ACTIVATE:
return (
<ConfirmationStep
@@ -271,14 +246,6 @@ const ActionsStep = React.memo(({ userId, onClose }) => {
context: 'title',
})}
</Menu.Item>
{user.isSsoUser && !user.lockedFieldNames.includes('isSsoUser') && !isCurrentUser && (
<Menu.Item className={styles.menuItem} onClick={handleUnlinkSsoClick}>
<Icon name="unlink" className={styles.menuItemIcon} />
{t('action.unlinkSso', {
context: 'title',
})}
</Menu.Item>
)}
{!isCurrentUser && (
<>
<Menu.Item
@@ -21,11 +21,6 @@ const UsersPane = React.memo(() => {
const activeUsersTotal = useSelector(selectors.selectActiveUsersTotal);
const users = useSelector(selectors.selectUsers);
const canAdd = useSelector((state) => {
const oidcBootstrap = selectors.selectOidcBootstrap(state);
return !oidcBootstrap || !oidcBootstrap.isEnforced;
});
const [t] = useTranslation();
const [search, handleSearchChange] = useField('');
@@ -102,22 +97,20 @@ const UsersPane = React.memo(() => {
className={styles.toggleDeactivatedButton}
onClick={handleToggleDeactivatedClick}
/>
{canAdd && (
<AddPopup>
<Button
positive
disabled={activeUsersLimit !== null && activeUsersTotal >= activeUsersLimit}
className={styles.addButton}
>
{t('action.addUser')}
{activeUsersLimit !== null && (
<span className={styles.addButtonCounter}>
{activeUsersTotal}/{activeUsersLimit}
</span>
)}
</Button>
</AddPopup>
)}
<AddPopup>
<Button
positive
disabled={activeUsersLimit !== null && activeUsersTotal >= activeUsersLimit}
className={styles.addButton}
>
{t('action.addUser')}
{activeUsersLimit !== null && (
<span className={styles.addButtonCounter}>
{activeUsersTotal}/{activeUsersLimit}
</span>
)}
</Button>
</AddPopup>
</div>
</Tab.Pane>
);
+41 -89
View File
@@ -8,8 +8,7 @@ import React, { useCallback, useEffect, useMemo } from 'react';
import classNames from 'classnames';
import { useDispatch, useSelector } from 'react-redux';
import { useTranslation, Trans } from 'react-i18next';
import TextareaAutosize from 'react-textarea-autosize';
import { Button, Divider, Form, Grid, Header, Message, TextArea } from 'semantic-ui-react';
import { Form, Grid, Header, Message } from 'semantic-ui-react';
import { useDidUpdate, usePrevious, useToggle } from '../../../lib/hooks';
import { Input } from '../../../lib/custom-ui';
@@ -24,7 +23,7 @@ import logo from '../../../assets/images/logo.png';
import styles from './Content.module.scss';
const createMessage = (error, isDebug) => {
const createMessage = (error) => {
if (!error) {
return error;
}
@@ -45,11 +44,6 @@ const createMessage = (error, isDebug) => {
type: 'error',
content: 'common.invalidPassword',
};
case 'Use single sign-on':
return {
type: 'error',
content: 'common.useSingleSignOn',
};
case 'Admin login required to initialize instance':
return {
type: 'error',
@@ -83,7 +77,7 @@ const createMessage = (error, isDebug) => {
default:
return {
type: 'warning',
content: isDebug ? error.message : 'common.unknownError',
content: 'common.unknownError',
};
}
};
@@ -94,9 +88,7 @@ const Content = React.memo(() => {
const {
data: defaultData,
isSubmitting,
isSubmittingWithOidc,
error,
debugLogs,
step,
} = useSelector(selectors.selectAuthenticateForm);
@@ -126,11 +118,7 @@ const Content = React.memo(() => {
return initialData;
});
const withOidc = !!bootstrap.oidc;
const isOidcEnforced = withOidc && bootstrap.oidc.isEnforced;
const isOidcDebug = withOidc && bootstrap.oidc.debug;
const message = useMemo(() => createMessage(error, isOidcDebug), [error, isOidcDebug]);
const message = useMemo(() => createMessage(error), [error]);
const [focusPasswordFieldState, focusPasswordField] = useToggle();
const [emailOrUsernameFieldRef, handleEmailOrUsernameFieldRef] = useNestedRef('inputRef');
@@ -155,19 +143,13 @@ const Content = React.memo(() => {
dispatch(entryActions.authenticate(cleanData));
}, [dispatch, data, emailOrUsernameFieldRef, passwordFieldRef]);
const handleAuthenticateWithOidcClick = useCallback(() => {
dispatch(entryActions.authenticateWithOidc());
}, [dispatch]);
const handleMessageDismiss = useCallback(() => {
dispatch(entryActions.clearAuthenticateError());
}, [dispatch]);
useEffect(() => {
if (!isOidcEnforced) {
emailOrUsernameFieldRef.current.focus();
}
}, [isOidcEnforced, emailOrUsernameFieldRef]);
emailOrUsernameFieldRef.current.focus();
}, [emailOrUsernameFieldRef]);
useDidUpdate(() => {
if (wasSubmitting && !isSubmitting && error) {
@@ -227,73 +209,43 @@ const Content = React.memo(() => {
onDismiss={handleMessageDismiss}
/>
)}
{!isOidcEnforced && (
<>
<Form size="large" onSubmit={handleSubmit}>
<div className={styles.inputWrapper}>
<div className={styles.inputLabel}>{t('common.emailOrUsername')}</div>
<Input
fluid
ref={handleEmailOrUsernameFieldRef}
name="emailOrUsername"
value={data.emailOrUsername}
maxLength={256}
readOnly={isSubmitting}
className={styles.input}
onChange={handleFieldChange}
/>
</div>
<div className={styles.inputWrapper}>
<div className={styles.inputLabel}>{t('common.password')}</div>
<Input.Password
fluid
ref={handlePasswordFieldRef}
name="password"
value={data.password}
maxLength={256}
readOnly={isSubmitting}
className={styles.input}
onChange={handleFieldChange}
/>
</div>
<Form.Button
fluid
primary
icon="right arrow"
labelPosition="right"
content={t('action.logIn')}
loading={isSubmitting}
disabled={isSubmitting || isSubmittingWithOidc}
/>
</Form>
{withOidc && (
<Divider horizontal content={t('common.or')} className={styles.divider} />
)}
</>
)}
{withOidc && (
<>
<Button
<Form size="large" onSubmit={handleSubmit}>
<div className={styles.inputWrapper}>
<div className={styles.inputLabel}>{t('common.emailOrUsername')}</div>
<Input
fluid
primary={isOidcDebug ? undefined : isOidcEnforced}
color={isOidcDebug ? 'orange' : undefined}
icon={isOidcEnforced ? 'right arrow' : undefined}
labelPosition={isOidcEnforced ? 'right' : undefined}
content={isOidcDebug ? t('action.debugSso') : t('action.logInWithSso')}
loading={isSubmittingWithOidc}
disabled={isSubmitting || isSubmittingWithOidc}
onClick={handleAuthenticateWithOidcClick}
ref={handleEmailOrUsernameFieldRef}
name="emailOrUsername"
value={data.emailOrUsername}
maxLength={256}
readOnly={isSubmitting}
className={styles.input}
onChange={handleFieldChange}
/>
{debugLogs && (
<TextArea
readOnly
as={TextareaAutosize}
value={debugLogs.join('\n')}
className={styles.debugLog}
/>
)}
</>
)}
</div>
<div className={styles.inputWrapper}>
<div className={styles.inputLabel}>{t('common.password')}</div>
<Input.Password
fluid
ref={handlePasswordFieldRef}
name="password"
value={data.password}
maxLength={256}
readOnly={isSubmitting}
className={styles.input}
onChange={handleFieldChange}
/>
</div>
<Form.Button
fluid
primary
icon="right arrow"
labelPosition="right"
content={t('action.logIn')}
loading={isSubmitting}
disabled={isSubmitting}
/>
</Form>
</div>
<div className={styles.poweredBy}>
<p className={styles.poweredByText}>
-1
View File
@@ -32,7 +32,6 @@ function Root({ store, history }) {
<ToasterProvider toaster={toaster}>
<Routes>
<Route path={Paths.LOGIN} element={<Login />} />
<Route path={Paths.OIDC_CALLBACK} element={<Login />} />
<Route path={Paths.ROOT} element={<Core />} />
<Route path={Paths.PROJECTS} element={<Core />} />
<Route path={Paths.BOARDS} element={<Core />} />
@@ -47,12 +47,11 @@ const EditUserEmailStep = React.memo(({ id, onBack, onClose }) => {
const {
email,
isSsoUser,
emailUpdateForm: { data: defaultData, isSubmitting, error },
} = useSelector((state) => selectUserById(state, id));
const withPasswordConfirmation = useSelector(
(state) => id === selectors.selectCurrentUserId(state) && !isSsoUser,
(state) => id === selectors.selectCurrentUserId(state),
);
const dispatch = useDispatch();
@@ -42,12 +42,11 @@ const EditUserPasswordStep = React.memo(({ id, onBack, onClose }) => {
const selectUserById = useMemo(() => selectors.makeSelectUserById(), []);
const {
isSsoUser,
passwordUpdateForm: { data: defaultData, isSubmitting, error },
} = useSelector((state) => selectUserById(state, id));
const withPasswordConfirmation = useSelector(
(state) => id === selectors.selectCurrentUserId(state) && !isSsoUser,
(state) => id === selectors.selectCurrentUserId(state),
);
const dispatch = useDispatch();
@@ -47,12 +47,11 @@ const EditUserUsernameStep = React.memo(({ id, onBack, onClose }) => {
const {
username,
isSsoUser,
usernameUpdateForm: { data: defaultData, isSubmitting, error },
} = useSelector((state) => selectUserById(state, id));
const withPasswordConfirmation = useSelector(
(state) => id === selectors.selectCurrentUserId(state) && !isSsoUser,
(state) => id === selectors.selectCurrentUserId(state),
);
const dispatch = useDispatch();
-4
View File
@@ -26,10 +26,6 @@ export default {
AUTHENTICATE: 'AUTHENTICATE',
AUTHENTICATE__SUCCESS: 'AUTHENTICATE__SUCCESS',
AUTHENTICATE__FAILURE: 'AUTHENTICATE__FAILURE',
WITH_OIDC_AUTHENTICATE: 'WITH_OIDC_AUTHENTICATE',
WITH_OIDC_AUTHENTICATE__SUCCESS: 'WITH_OIDC_AUTHENTICATE__SUCCESS',
WITH_OIDC_AUTHENTICATE__FAILURE: 'WITH_OIDC_AUTHENTICATE__FAILURE',
WITH_OIDC_AUTHENTICATE__DEBUG: 'WITH_OIDC_AUTHENTICATE__DEBUG',
AUTHENTICATE_ERROR_CLEAR: 'AUTHENTICATE_ERROR_CLEAR',
TERMS_ACCEPT: 'TERMS_ACCEPT',
TERMS_ACCEPT__SUCCESS: 'TERMS_ACCEPT__SUCCESS',
-1
View File
@@ -20,7 +20,6 @@ export default {
/* Login */
AUTHENTICATE: `${PREFIX}/AUTHENTICATE`,
WITH_OIDC_AUTHENTICATE: `${PREFIX}/WITH_OIDC_AUTHENTICATE`,
AUTHENTICATE_ERROR_CLEAR: `${PREFIX}/AUTHENTICATE_ERROR_CLEAR`,
TERMS_ACCEPT: `${PREFIX}/TERMS_ACCEPT`,
TERMS_CANCEL: `${PREFIX}/TERMS_CANCEL`,
-2
View File
@@ -7,7 +7,6 @@ import Config from './Config';
const ROOT = `${Config.BASE_PATH}/`;
const LOGIN = `${Config.BASE_PATH}/login`;
const OIDC_CALLBACK = `${Config.BASE_PATH}/oidc-callback`;
const PROJECTS = `${Config.BASE_PATH}/projects/:id`;
const BOARDS = `${Config.BASE_PATH}/boards/:id`;
const CARDS = `${Config.BASE_PATH}/cards/:id`;
@@ -15,7 +14,6 @@ const CARDS = `${Config.BASE_PATH}/cards/:id`;
export default {
ROOT,
LOGIN,
OIDC_CALLBACK,
PROJECTS,
BOARDS,
CARDS,
-6
View File
@@ -12,11 +12,6 @@ const authenticate = (data) => ({
},
});
const authenticateWithOidc = () => ({
type: EntryActionTypes.WITH_OIDC_AUTHENTICATE,
payload: {},
});
const clearAuthenticateError = () => ({
type: EntryActionTypes.AUTHENTICATE_ERROR_CLEAR,
payload: {},
@@ -43,7 +38,6 @@ const updateTermsLanguage = (value) => ({
export default {
authenticate,
authenticateWithOidc,
clearAuthenticateError,
acceptTerms,
cancelTerms,
-5
View File
@@ -83,8 +83,6 @@ export default {
'هل أنت متأكد أنك تريد إزالة هذا المدير من المشروع؟',
areYouSureYouWantToRemoveThisMemberFromBoard:
'هل أنت متأكد أنك تريد إزالة هذا العضو من اللوحة؟',
areYouSureYouWantToUnlinkSsoFromThisUser:
'هل أنت متأكد أنك تريد إلغاء ربط تسجيل الدخول الموحد من هذا المستخدم؟ سيسمح هذا للمستخدم بتسجيل الدخول باستخدام كلمة المرور.',
assignAsOwner_title: 'تعيين كمالك',
atLeastOneListMustBePresent: 'يجب وجود قائمة واحدة على الأقل',
attachment: 'مرفق',
@@ -330,7 +328,6 @@ export default {
turnOffRecentCardHighlighting: 'إيقاف تمييز البطاقات الحديثة',
typeNameToConfirm: 'اكتب الاسم للتأكيد.',
typeTitleToConfirm: 'اكتب العنوان للتأكيد.',
unlinkSso_title: 'إلغاء ربط تسجيل الدخول الموحد',
unsavedChanges: 'تغييرات غير محفوظة',
uploadFailedFileIsTooBig: 'فشل الرفع: الملف كبير جداً.',
uploadFailedNotEnoughStorageSpace: 'فشل الرفع: مساحة التخزين غير كافية.',
@@ -497,8 +494,6 @@ export default {
start: 'ابدأ',
stop: 'توقف',
subscribe: 'اشترك',
unlinkSso: 'إلغاء ربط تسجيل الدخول الموحد',
unlinkSso_title: 'إلغاء ربط تسجيل الدخول الموحد',
unsubscribe: 'إلغاء الاشتراك',
uploadNewAvatar: 'رفع صورة رمزية جديدة',
uploadNewImage: 'رفع صورة جديدة',
-3
View File
@@ -16,7 +16,6 @@ export default {
poweredByPlanka: 'مدعوم بواسطة <1>PLANKA</1>',
serverConnectionFailed: 'فشل الاتصال بالخادم',
unknownError: 'خطأ غير معروف، يرجى المحاولة لاحقاً',
useSingleSignOn: 'استخدم تسجيل الدخول الموحد',
usernameAlreadyInUse: 'اسم المستخدم تم استخدامه بالفعل',
whoops_title: 'عفواً!',
},
@@ -24,11 +23,9 @@ export default {
action: {
cancelAndClose: 'إلغاء وإغلاق',
continue: 'متابعة',
debugSso: 'تصحيح أخطاء تسجيل الدخول الموحد',
goBack: 'العودة',
goHome: 'الذهاب للرئيسية',
logIn: 'تسجيل الدخول',
logInWithSso: 'تسجيل الدخول باستخدام SSO',
},
},
};
-5
View File
@@ -92,8 +92,6 @@ export default {
'Сигурни ли сте, че искате да премахнете този мениджър от проекта?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Сигурни ли сте, че искате да премахнете този член от таблото?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Сигурни ли сте, че искате да премахнете SSO връзката от този потребител? Това ще позволи на потребителя да влиза с парола.',
assignAsOwner_title: 'Назначаване като собственик',
atLeastOneListMustBePresent: 'Трябва да присъства поне един списък',
attachment: 'Прикачен файл',
@@ -343,7 +341,6 @@ export default {
turnOffRecentCardHighlighting: 'Изключване на подчертаването на скорошни карти',
typeNameToConfirm: 'Въведете име за потвърждение.',
typeTitleToConfirm: 'Въведете заглавие за потвърждение.',
unlinkSso_title: 'Премахване на SSO връзка',
unsavedChanges: 'Незапазени промени',
uploadFailedFileIsTooBig: 'Качването неуспешно: файлът е твърде голям.',
uploadFailedNotEnoughStorageSpace:
@@ -512,8 +509,6 @@ export default {
start: 'Старт',
stop: 'Стоп',
subscribe: 'Абонирайте се',
unlinkSso: 'Премахни SSO връзка',
unlinkSso_title: 'Премахни SSO връзка',
unsubscribe: 'Отписване',
uploadNewAvatar: 'Качване на нов аватар',
uploadNewImage: 'Качване на ново изображение',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Задвижвано от <1>PLANKA</1>',
serverConnectionFailed: 'Неуспешна връзка със сървъра',
unknownError: 'Неизвестна грешка, опитайте отново по-късно',
useSingleSignOn: 'Използване на single sign-on',
usernameAlreadyInUse: 'Потребителското име вече се използва',
whoops_title: 'Опа!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Отказ и затваряне',
continue: 'Продължи',
debugSso: 'Дебъгване на SSO',
goBack: 'Назад',
goHome: 'Към началото',
logIn: 'Вход',
logInWithSso: 'Вход чрез SSO',
},
},
};
-5
View File
@@ -90,8 +90,6 @@ export default {
'Estàs segur que vols eliminar aquest gestor del projecte?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Estàs segur que vols eliminar aquest membre del tauler?',
areYouSureYouWantToUnlinkSsoFromThisUser:
"Estàs segur que vols desvincular SSO d'aquest usuari? Això permetrà que l'usuari iniciï sessió amb una contrasenya.",
assignAsOwner_title: 'Assignar com a propietari',
atLeastOneListMustBePresent: "Hi ha d'haver com a mínim una llista",
attachment: 'Fitxer adjunt',
@@ -344,7 +342,6 @@ export default {
turnOffRecentCardHighlighting: 'Desactivar ressaltat de targetes recents',
typeNameToConfirm: 'Escriu el nom per confirmar.',
typeTitleToConfirm: 'Escriu el títol per confirmar.',
unlinkSso_title: 'Desvinculació de SSO',
unsavedChanges: 'Canvis sense desar',
uploadFailedFileIsTooBig: 'Error en pujar: El fitxer és massa gran.',
uploadFailedNotEnoughStorageSpace: "Error en pujar: No hi ha prou espai d'emmagatzematge.",
@@ -514,8 +511,6 @@ export default {
start: 'Iniciar',
stop: 'Aturar',
subscribe: "Subscriure's",
unlinkSso: 'Desvincular SSO',
unlinkSso_title: 'Desvincular SSO',
unsubscribe: 'Cancel·lar subscripció',
uploadNewAvatar: 'Pujar nou avatar',
uploadNewImage: 'Pujar nova imatge',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Desenvolupat amb <1>PLANKA</1>',
serverConnectionFailed: 'Error de connexió amb el servidor',
unknownError: 'Error desconegut, torna-ho a provar més tard',
useSingleSignOn: 'Utilitzar inici de sessió únic',
usernameAlreadyInUse: "Nom d'usuari ja en ús",
whoops_title: 'Ups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Cancel·lar i tancar',
continue: 'Continuar',
debugSso: 'Depurar SSO',
goBack: 'Tornar',
goHome: "Anar a l'inici",
logIn: 'Iniciar sessió',
logInWithSso: 'Iniciar sessió amb SSO',
},
},
};
-5
View File
@@ -85,8 +85,6 @@ export default {
'Opravdu chcete tohoto správce z projektu odebrat?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Opravdu chcete tohoto člena odebrat z nástěnky?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Opravdu chcete odpojit SSO od tohoto uživatele? Tím umožníte uživateli přihlásit se pomocí hesla.',
assignAsOwner_title: 'Přiřadit jako vlastníka',
atLeastOneListMustBePresent: 'Musí být k dispozici alespoň jeden seznam',
attachment: 'Příloha',
@@ -334,7 +332,6 @@ export default {
turnOffRecentCardHighlighting: 'Vypnout zvýraznění posledních karet',
typeNameToConfirm: 'Zadejte název pro potvrzení.',
typeTitleToConfirm: 'Zadejte titulek pro potvrzení.',
unlinkSso_title: 'Odpojení SSO',
unsavedChanges: 'Neuložené změny',
uploadFailedFileIsTooBig: 'Nahrávání se nezdařilo: Soubor je příliš velký.',
uploadFailedNotEnoughStorageSpace: 'Nahrávání se nezdařilo: Nedostatek úložného prostoru.',
@@ -502,8 +499,6 @@ export default {
start: 'Start',
stop: 'Stop',
subscribe: 'Odebírat',
unlinkSso: 'Odpojit SSO',
unlinkSso_title: 'Odpojit SSO',
unsubscribe: 'Neodebírat',
uploadNewAvatar: 'Nahrát nový avatar',
uploadNewImage: 'Nahrát nový obrázek',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Poháněno technologií <1>PLANKA</1>',
serverConnectionFailed: 'Připojení k serveru selhalo',
unknownError: 'Neznámá chyba, zkuste to později',
useSingleSignOn: 'Použít jednorázové přihlášení',
usernameAlreadyInUse: 'Uživatelské jméno se již používá',
whoops_title: 'Jejda!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Zrušit a zavřít',
continue: 'Pokračovat',
debugSso: 'Ladit SSO',
goBack: 'Zpět',
goHome: 'Domů',
logIn: 'Přihlásit se',
logInWithSso: 'Přihlásit se pomocí SSO',
},
},
};
-5
View File
@@ -88,8 +88,6 @@ export default {
'Er du sikker på at du vil fjerne denne projektleder fra projektet?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Er du sikker på at du vil fjerne dette medlem fra tavlen?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Er du sikker på, at du vil fjerne SSO-forbindelsen fra denne bruger? Dette vil tillade brugeren at logge ind med en adgangskode.',
assignAsOwner_title: 'Sæt som ejer',
atLeastOneListMustBePresent: 'Mindst én liste skal være til stede',
attachment: 'Vedhæft fil',
@@ -340,7 +338,6 @@ export default {
turnOffRecentCardHighlighting: 'Slå fremhævelse af nylige kort fra',
typeNameToConfirm: 'Skriv navnet for at bekræfte.',
typeTitleToConfirm: 'Skriv overskriften for at bekræfte.',
unlinkSso_title: 'Fjernelse af SSO-forbindelse',
unsavedChanges: 'Ikke-gemte ændringer',
uploadFailedFileIsTooBig: 'Upload mislykkedes: Filen er for stor.',
uploadFailedNotEnoughStorageSpace: 'Upload mislykkedes: Ikke nok lagerplads.',
@@ -508,8 +505,6 @@ export default {
start: 'Start',
stop: 'Stop',
subscribe: 'Abonnér',
unlinkSso: 'Fjern SSO-forbindelse',
unlinkSso_title: 'Fjern SSO-forbindelse',
unsubscribe: 'Opsig abonnement',
uploadNewAvatar: 'Tilføj nyt profilbillede',
uploadNewImage: 'Tilføj nyt billede',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Drevet af <1>PLANKA</1>',
serverConnectionFailed: 'Ingen forbindelse til serveren',
unknownError: 'Ukendt fejl - prøv igen',
useSingleSignOn: 'Anvend single sign-on',
usernameAlreadyInUse: 'Brugernavn allerede i brug',
whoops_title: 'Ups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Annuller og luk',
continue: 'Fortsæt',
debugSso: 'Fejlfind SSO',
goBack: 'Gå tilbage',
goHome: 'Gå hjem',
logIn: 'Log på',
logInWithSso: 'Log på med SSO',
},
},
};
-5
View File
@@ -101,8 +101,6 @@ export default {
'Sind Sie sicher, dass Sie diesen Projektleiter aus dem Projekt entfernen möchten?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Sind Sie sicher, dass Sie dieses Mitglied aus dem Arbeitsbereich entfernen möchten?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Sind Sie sicher, dass Sie die SSO-Verknüpfung von diesem Benutzer aufheben möchten? Dies ermöglicht dem Benutzer die Anmeldung mit einem Passwort.',
assignAsOwner_title: 'Als Eigentümer zuweisen',
atLeastOneListMustBePresent: 'Mindestens eine Liste muss vorhanden sein',
attachment: 'Anhang',
@@ -354,7 +352,6 @@ export default {
turnOffRecentCardHighlighting: 'Hervorhebung neuer Karten ausschalten',
typeNameToConfirm: 'Namen zur Bestätigung eingeben.',
typeTitleToConfirm: 'Titel zur Bestätigung eingeben.',
unlinkSso_title: 'SSO-Verknüpfung aufheben',
unsavedChanges: 'Ungespeicherte Änderungen',
uploadFailedFileIsTooBig: 'Upload fehlgeschlagen: Datei ist zu groß.',
uploadFailedNotEnoughStorageSpace: 'Upload fehlgeschlagen: Nicht genügend Speicherplatz.',
@@ -524,8 +521,6 @@ export default {
start: 'Start',
stop: 'Stopp',
subscribe: 'Abonnieren',
unlinkSso: 'SSO-Verknüpfung aufheben',
unlinkSso_title: 'SSO-Verknüpfung aufheben',
unsubscribe: 'De-abonnieren',
uploadNewAvatar: 'Neuen Avatar hochladen',
uploadNewImage: 'Neues Bild hochladen',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Powered by <1>PLANKA</1>',
serverConnectionFailed: 'Serververbindung fehlgeschlagen',
unknownError: 'Unbekannter Fehler, bitte später erneut versuchen',
useSingleSignOn: 'Einmalige Anmeldung (SSO) verwenden',
usernameAlreadyInUse: 'Benutzername wird bereits verwendet',
whoops_title: 'Hoppla!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Abbrechen und schließen',
continue: 'Fortfahren',
debugSso: 'SSO debuggen',
goBack: 'Zurück gehen',
goHome: 'Zur Startseite',
logIn: 'Einloggen',
logInWithSso: 'Einloggen mit SSO',
},
},
};
-5
View File
@@ -100,8 +100,6 @@ export default {
'Είστε σίγουροι ότι θέλετε να αφαιρέσετε αυτόν τον διαχειριστή από το έργο;',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Είστε σίγουροι ότι θέλετε να αφαιρέσετε αυτό το μέλος από τον πίνακα;',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Είστε σίγουροι ότι θέλετε να αποσυνδέσετε το SSO από αυτόν τον χρήστη; Αυτό θα επιτρέψει στον χρήστη να συνδεθεί με κωδικό πρόσβασης.',
assignAsOwner_title: 'Ορισμός ως ιδιοκτήτης',
atLeastOneListMustBePresent: 'Πρέπει να υπάρχει τουλάχιστον μία λίστα',
attachment: 'Συνημμένο',
@@ -354,7 +352,6 @@ export default {
turnOffRecentCardHighlighting: 'Απενεργοποίηση επισήμανσης πρόσφατων καρτών',
typeNameToConfirm: 'Πληκτρολογήστε το όνομα για επιβεβαίωση.',
typeTitleToConfirm: 'Πληκτρολογήστε τον τίτλο για επιβεβαίωση.',
unlinkSso_title: 'Αποσύνδεση SSO',
unsavedChanges: 'Μη αποθηκευμένες αλλαγές',
uploadFailedFileIsTooBig: 'Η μεταφόρτωση απέτυχε: το αρχείο είναι πολύ μεγάλο.',
uploadFailedNotEnoughStorageSpace:
@@ -529,8 +526,6 @@ export default {
start: 'Έναρξη',
stop: 'Διακοπή',
subscribe: 'Εγγραφή',
unlinkSso: 'Αποσύνδεση SSO',
unlinkSso_title: 'Αποσύνδεση SSO',
unsubscribe: 'Απεγγραφή',
uploadNewAvatar: 'Μεταφόρτωση νέου avatar',
uploadNewImage: 'Μεταφόρτωση νέας εικόνας',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Με την υποστήριξη του <1>PLANKA</1>',
serverConnectionFailed: 'Αποτυχία σύνδεσης με τον διακομιστή',
unknownError: 'Άγνωστο σφάλμα, δοκιμάστε ξανά αργότερα',
useSingleSignOn: 'Χρήση Single Sign-On',
usernameAlreadyInUse: 'Το όνομα χρήστη χρησιμοποιείται ήδη',
whoops_title: 'Ωχ!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Ακύρωση και κλείσιμο',
continue: 'Συνέχεια',
debugSso: 'Αποσφαλμάτωση SSO',
goBack: 'Επιστροφή',
goHome: 'Αρχική σελίδα',
logIn: 'Σύνδεση',
logInWithSso: 'Σύνδεση με SSO',
},
},
};
-5
View File
@@ -88,8 +88,6 @@ export default {
'Are you sure you want to remove this manager from the project?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Are you sure you want to remove this member from the board?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Are you sure you want to unlink SSO from this user? This will allow the user to log in with a password.',
assignAsOwner_title: 'Assign As Owner',
atLeastOneListMustBePresent: 'At least one list must be present',
attachment: 'Attachment',
@@ -337,7 +335,6 @@ export default {
turnOffRecentCardHighlighting: 'Turn off recent card highlighting',
typeNameToConfirm: 'Type the name to confirm.',
typeTitleToConfirm: 'Type the title to confirm.',
unlinkSso_title: 'Unlink SSO',
unsavedChanges: 'Unsaved changes',
uploadFailedFileIsTooBig: 'Upload failed: File is too big.',
uploadFailedNotEnoughStorageSpace: 'Upload failed: Not enough storage space.',
@@ -504,8 +501,6 @@ export default {
start: 'Start',
stop: 'Stop',
subscribe: 'Subscribe',
unlinkSso: 'Unlink SSO',
unlinkSso_title: 'Unlink SSO',
unsubscribe: 'Unsubscribe',
uploadNewAvatar: 'Upload new avatar',
uploadNewImage: 'Upload new image',
-3
View File
@@ -16,7 +16,6 @@ export default {
poweredByPlanka: 'Powered by <1>PLANKA</1>',
serverConnectionFailed: 'Server connection failed',
unknownError: 'Unknown error, try again later',
useSingleSignOn: 'Use single sign-on',
usernameAlreadyInUse: 'Username already in use',
whoops_title: 'Whoops!',
},
@@ -24,11 +23,9 @@ export default {
action: {
cancelAndClose: 'Cancel and close',
continue: 'Continue',
debugSso: 'Debug SSO',
goBack: 'Go back',
goHome: 'Go home',
logIn: 'Log in',
logInWithSso: 'Log in with SSO',
},
},
};
-5
View File
@@ -83,8 +83,6 @@ export default {
'Are you sure you want to remove this manager from the project?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Are you sure you want to remove this member from the board?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Are you sure you want to unlink SSO from this user? This will allow the user to log in with a password.',
assignAsOwner_title: 'Assign As Owner',
atLeastOneListMustBePresent: 'At least one list must be present',
attachment: 'Attachment',
@@ -332,7 +330,6 @@ export default {
turnOffRecentCardHighlighting: 'Turn off recent card highlighting',
typeNameToConfirm: 'Type the name to confirm.',
typeTitleToConfirm: 'Type the title to confirm.',
unlinkSso_title: 'Inlink SSO',
unsavedChanges: 'Unsaved changes',
uploadFailedFileIsTooBig: 'Upload failed: File is too big.',
uploadFailedNotEnoughStorageSpace: 'Upload failed: Not enough storage space.',
@@ -499,8 +496,6 @@ export default {
start: 'Start',
stop: 'Stop',
subscribe: 'Subscribe',
unlinkSso: 'Unlink SSO',
unlinkSso_title: 'Unlink SSO',
unsubscribe: 'Unsubscribe',
uploadNewAvatar: 'Upload new avatar',
uploadNewImage: 'Upload new image',
-3
View File
@@ -16,7 +16,6 @@ export default {
poweredByPlanka: 'Powered by <1>PLANKA</1>',
serverConnectionFailed: 'Server connection failed',
unknownError: 'Unknown error, try again later',
useSingleSignOn: 'Use single sign-on',
usernameAlreadyInUse: 'Username already in use',
whoops_title: 'Whoops!',
},
@@ -24,11 +23,9 @@ export default {
action: {
cancelAndClose: 'Cancel and close',
continue: 'Continue',
debugSso: 'Debug SSO',
goBack: 'Go back',
goHome: 'Go home',
logIn: 'Log in',
logInWithSso: 'Log in with SSO',
},
},
};
-5
View File
@@ -92,8 +92,6 @@ export default {
'¿Estás seguro de que quieres eliminar este gestor del proyecto?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'¿Estás seguro de que quieres eliminar este miembro del tablero?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'¿Estás seguro de que quieres desvincular SSO de este usuario? Esto permitirá que el usuario inicie sesión con una contraseña.',
assignAsOwner_title: 'Asignar como propietario',
atLeastOneListMustBePresent: 'Debe existir al menos una lista',
attachment: 'Archivo adjunto',
@@ -345,7 +343,6 @@ export default {
turnOffRecentCardHighlighting: 'Desactivar resaltado de tarjetas recientes',
typeNameToConfirm: 'Escribe el nombre para confirmar.',
typeTitleToConfirm: 'Escribe el título para confirmar.',
unlinkSso_title: 'Desvinculación de SSO',
unsavedChanges: 'Cambios sin guardar',
uploadFailedFileIsTooBig: 'Error al subir: El archivo es demasiado grande.',
uploadFailedNotEnoughStorageSpace:
@@ -514,8 +511,6 @@ export default {
start: 'Iniciar',
stop: 'Detener',
subscribe: 'Suscribirse',
unlinkSso: 'Desvincular SSO',
unlinkSso_title: 'Desvincular SSO',
unsubscribe: 'Cancelar suscripción',
uploadNewAvatar: 'Subir nuevo avatar',
uploadNewImage: 'Subir nueva imagen',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Desarrollado con <1>PLANKA</1>',
serverConnectionFailed: 'Error de conexión con el servidor',
unknownError: 'Error desconocido, inténtalo más tarde',
useSingleSignOn: 'Usar inicio de sesión único',
usernameAlreadyInUse: 'Nombre de usuario ya en uso',
whoops_title: '¡Ups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Cancelar y cerrar',
continue: 'Continuar',
debugSso: 'Depurar SSO',
goBack: 'Volver',
goHome: 'Ir al inicio',
logIn: 'Iniciar sesión',
logInWithSso: 'Iniciar sesión con SSO',
},
},
};
-5
View File
@@ -89,8 +89,6 @@ export default {
'Oled kindel, et soovid seda haldurit projektist eemaldada?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Oled kindel, et soovid seda liiget tahvlilt eemaldada?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Kas olete kindel, et soovite selle kasutaja SSO sidet eemaldada? See võimaldab kasutajal sisse logida parooliga.',
assignAsOwner_title: 'Määra omanikuks',
atLeastOneListMustBePresent: 'Vähemalt üks nimekiri peab olemas olema',
attachment: 'Manus',
@@ -337,7 +335,6 @@ export default {
turnOffRecentCardHighlighting: 'Lülita välja hiljuti kuvatud kaardi üleminek',
typeNameToConfirm: 'Sisestage nimi, et kinnitada.',
typeTitleToConfirm: 'Sisestage pealkiri, et kinnitada.',
unlinkSso_title: 'SSO sidemete eemaldamine',
unsavedChanges: 'Muudetud andmed',
uploadFailedFileIsTooBig: 'Üleslaadimine ebaõnnestus: fail on liiga suur.',
uploadFailedNotEnoughStorageSpace:
@@ -506,8 +503,6 @@ export default {
start: 'Alusta',
stop: 'Peata',
subscribe: 'Telli',
unlinkSso: 'Eemalda SSO side',
unlinkSso_title: 'Eemalda SSO side',
unsubscribe: 'Tühista tellimus',
uploadNewAvatar: 'Laadi üles uus avatar',
uploadNewImage: 'Laadi üles uus pilt',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Töötab <1>PLANKA</1> platvormil',
serverConnectionFailed: 'Serveriühendus ebaõnnestus',
unknownError: 'Tundmatu viga, proovi hiljem uuesti',
useSingleSignOn: 'Kasuta ühekordset sisselogimist',
usernameAlreadyInUse: 'Kasutajanimi on juba kasutusel',
whoops_title: 'Ups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Tühista ja sulge',
continue: 'Jätka',
debugSso: 'Siluda SSO',
goBack: 'Tagasi',
goHome: 'Koju',
logIn: 'Logi sisse',
logInWithSso: 'Logi sisse SSO-ga',
},
},
};
-5
View File
@@ -91,8 +91,6 @@ export default {
'آیا مطمئن هستید که می‌خواهید این مدیر را از پروژه حذف کنید؟',
areYouSureYouWantToRemoveThisMemberFromBoard:
'آیا مطمئن هستید که می‌خواهید این عضو را از برد حذف کنید؟',
areYouSureYouWantToUnlinkSsoFromThisUser:
'آیا مطمئن هستید که می‌خواهید پیوند SSO را از این کاربر لغو کنید؟ این به کاربر اجازه می‌دهد با رمز عبور وارد شود.',
assignAsOwner_title: 'تعیین به عنوان مالک',
atLeastOneListMustBePresent: 'حداقل یک لیست باید وجود داشته باشد',
attachment: 'پیوست',
@@ -340,7 +338,6 @@ export default {
turnOffRecentCardHighlighting: 'خاموش کردن برجسته‌سازی کارت‌های اخیر',
typeNameToConfirm: 'نام را برای تأیید تایپ کنید.',
typeTitleToConfirm: 'عنوان را برای تأیید تایپ کنید.',
unlinkSso_title: 'لغو پیوند SSO',
unsavedChanges: 'تغییرات ذخیره نشده',
uploadFailedFileIsTooBig: 'آپلود ناموفق: فایل خیلی بزرگ است.',
uploadFailedNotEnoughStorageSpace: 'آپلود ناموفق: فضای ذخیره‌سازی کافی نیست.',
@@ -508,8 +505,6 @@ export default {
start: 'شروع',
stop: 'توقف',
subscribe: 'مشترک شدن',
unlinkSso: 'لغو پیوند SSO',
unlinkSso_title: 'لغو پیوند SSO',
unsubscribe: 'لغو اشتراک',
uploadNewAvatar: 'آپلود آواتار جدید',
uploadNewImage: 'آپلود تصویر جدید',
-3
View File
@@ -16,7 +16,6 @@ export default {
poweredByPlanka: 'قدرت گرفته از <1>PLANKA</1>',
serverConnectionFailed: 'اتصال به سرور ناموفق بود',
unknownError: 'خطای ناشناخته، بعداً دوباره تلاش کنید',
useSingleSignOn: 'استفاده از ورود یکپارچه',
usernameAlreadyInUse: 'نام کاربری قبلا استفاده شده است',
whoops_title: 'اوه!',
},
@@ -24,11 +23,9 @@ export default {
action: {
cancelAndClose: 'لغو و بستن',
continue: 'ادامه',
debugSso: 'اشکال‌زدایی SSO',
goBack: 'بازگشت',
goHome: 'رفتن به خانه',
logIn: 'ورود',
logInWithSso: 'ورود با SSO',
},
},
};
-5
View File
@@ -85,8 +85,6 @@ export default {
'Haluatko varmasti poistaa tämän ylläpitäjän projektista?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Haluatko varmasti poistaa tämän jäsenen taululta?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Haluatko varmasti poistaa SSO-yhteyden tältä käyttäjältä? Tämä sallii käyttäjän kirjautua sisään salasanalla.',
assignAsOwner_title: 'Aseta omistajaksi',
atLeastOneListMustBePresent: 'Vähintään yksi lista vaaditaan',
attachment: 'Liite',
@@ -335,7 +333,6 @@ export default {
turnOffRecentCardHighlighting: 'Poista uusien korttien korostus',
typeNameToConfirm: 'Kirjoita nimi vahvistaaksesi.',
typeTitleToConfirm: 'Kirjoita otsikko vahvistaaksesi.',
unlinkSso_title: 'SSO-yhteyden poistaminen',
unsavedChanges: 'Tallentamattomat muutokset',
uploadFailedFileIsTooBig: 'Lataus epäonnistui: tiedosto on liian suuri.',
uploadFailedNotEnoughStorageSpace: 'Lataus epäonnistui: tallennustilaa ei ole tarpeeksi.',
@@ -507,8 +504,6 @@ export default {
start: 'Aloita',
stop: 'Lopeta',
subscribe: 'Tilaa',
unlinkSso: 'Poista SSO-yhteys',
unlinkSso_title: 'Poista SSO-yhteys',
unsubscribe: 'Peru tilaus',
uploadNewAvatar: 'Lataa uusi avatar',
uploadNewImage: 'Lataa uusi kuva',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Käyttää <1>PLANKAa</1>',
serverConnectionFailed: 'Yhteys palvelimeen epäonnistui',
unknownError: 'Tuntematon virhe, yritä myöhemmin uudelleen',
useSingleSignOn: 'Käytä kertakirjautumista',
usernameAlreadyInUse: 'Käyttäjänimi on jo käytössä',
whoops_title: 'Hups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Peruuta ja sulje',
continue: 'Jatka',
debugSso: 'Korjaa SSO-virheitä',
goBack: 'Takaisin',
goHome: 'Kotiin',
logIn: 'Kirjaudu sisään',
logInWithSso: 'Kirjaudu SSO:lla',
},
},
};
-5
View File
@@ -91,8 +91,6 @@ export default {
'Êtes-vous sûr de vouloir supprimer ce responsable du projet ?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Êtes-vous sûr de vouloir supprimer ce membre du tableau ?',
areYouSureYouWantToUnlinkSsoFromThisUser:
"Êtes-vous sûr de vouloir dissocier le SSO de cet utilisateur ? Cela permettra à l'utilisateur de se connecter avec un mot de passe.",
assignAsOwner_title: 'Assigner comme propriétaire',
atLeastOneListMustBePresent: 'Au moins une liste doit être présente',
attachment: 'Pièce jointe',
@@ -344,7 +342,6 @@ export default {
turnOffRecentCardHighlighting: 'Désactiver la mise en évidence des cartes récentes',
typeNameToConfirm: 'Saissir le nom pour confirmer.',
typeTitleToConfirm: 'Saisir le titre pour confirmer.',
unlinkSso_title: 'Dissociation du SSO',
unsavedChanges: 'Modifications non enregistrées',
uploadFailedFileIsTooBig: 'Échec du téléchargement : fichier trop volumineux.',
uploadFailedNotEnoughStorageSpace:
@@ -512,8 +509,6 @@ export default {
start: 'Commencer',
stop: 'Arrêter',
subscribe: "S'abonner",
unlinkSso: 'Dissocier le SSO',
unlinkSso_title: 'Dissocier le SSO',
unsubscribe: 'Se désabonner',
uploadNewAvatar: 'Télécharger un nouvel avatar',
uploadNewImage: 'Télécharger une nouvelle image',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Propulsé par <1>PLANKA</1>',
serverConnectionFailed: 'Échec de la connexion au serveur',
unknownError: 'Erreur inconnue, réessayez plus tard',
useSingleSignOn: "Utiliser l'authentification unique",
usernameAlreadyInUse: "Nom d'utilisateur déjà utilisé",
whoops_title: 'Oups !',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Annuler et fermer',
continue: 'Continuer',
debugSso: 'Déboguer le SSO',
goBack: 'Retour',
goHome: "Aller à l'accueil",
logIn: 'Se connecter',
logInWithSso: "Se connecter avec l'authentification unique",
},
},
};
-5
View File
@@ -81,8 +81,6 @@ export default {
areYouSureYouWantToRemoveThisManagerFromProject:
'Biztosan eltávolítja ezt a menedzsert a projektből?',
areYouSureYouWantToRemoveThisMemberFromBoard: 'Biztosan eltávolítja ezt a tagot a tábláról?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Biztosan le szeretné választani az SSO-t ettől a felhasználótól? Ez lehetővé teszi a felhasználó számára, hogy jelszóval jelentkezzen be.',
assignAsOwner_title: 'Hozzárendelés tulajdonosnak',
atLeastOneListMustBePresent: 'Legalább egy lista szükséges.',
attachment: 'Melléklet',
@@ -331,7 +329,6 @@ export default {
turnOffRecentCardHighlighting: 'Legutóbb módosítótt kártyák kiemelésének kikapcsolása',
typeNameToConfirm: 'Írja be a nevet a megerősítéshez.',
typeTitleToConfirm: 'Írja be a címet a megerősítéshez.',
unlinkSso_title: 'SSO leválasztása',
unsavedChanges: 'Mentetlen változtatások',
uploadFailedFileIsTooBig: 'Feltöltési hiba: a fájl túl nagy.',
uploadFailedNotEnoughStorageSpace: 'Feltöltési hiba: nincs elég szabad tárhely.',
@@ -506,8 +503,6 @@ export default {
start: 'Indítás',
stop: 'Megállítás',
subscribe: 'Feliratkozás',
unlinkSso: 'SSO leválasztása',
unlinkSso_title: 'SSO leválasztása',
unsubscribe: 'Leiratkozás',
uploadNewAvatar: 'Új avatar feltöltése',
uploadNewImage: 'Új kép feltöltése',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Működteti a <1>PLANKA</1>',
serverConnectionFailed: 'A szerverkapcsolat sikertelen',
unknownError: 'Ismeretlen hiba, próbáld meg később újra',
useSingleSignOn: 'Egyszeri bejelentkezés használata',
usernameAlreadyInUse: 'A felhasználónév már használatban van',
whoops_title: 'Hoppá!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Mégse és bezárás',
continue: 'Folytatás',
debugSso: 'SSO hibakeresése',
goBack: 'Vissza',
goHome: 'Kezdőlapra',
logIn: 'Belépés',
logInWithSso: 'Belépés SSO-val',
},
},
};
-5
View File
@@ -88,8 +88,6 @@ export default {
'Apakah anda ingin menghapus manajer ini dari papan ini?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Apakah anda ingin menghapus anggota ini dari papan ini?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Apakah Anda yakin ingin memutuskan tautan SSO dari pengguna ini? Ini akan memungkinkan pengguna untuk masuk dengan kata sandi.',
assignAsOwner_title: 'Tetapkan sebagai pemilik',
atLeastOneListMustBePresent: 'Setidaknya satu daftar harus ada',
attachment: 'Lampiran',
@@ -339,7 +337,6 @@ export default {
turnOffRecentCardHighlighting: 'Matikan penyorotan kartu terbaru',
typeNameToConfirm: 'Ketik nama untuk mengonfirmasi.',
typeTitleToConfirm: 'Ketik judul untuk mengonfirmasi.',
unlinkSso_title: 'Pemutusan tautan SSO',
unsavedChanges: 'Perubahan yang belum disimpan',
uploadFailedFileIsTooBig: 'Unggahan gagal - file terlalu besar.',
uploadFailedNotEnoughStorageSpace: 'Unggahan gagal - ruang penyimpanan tidak cukup.',
@@ -507,8 +504,6 @@ export default {
start: 'Mulai',
stop: 'Berhenti',
subscribe: 'Berlanggan',
unlinkSso: 'Putuskan tautan SSO',
unlinkSso_title: 'Putuskan tautan SSO',
unsubscribe: 'Berhenti berlangganan',
uploadNewAvatar: 'Unggah avatar baru',
uploadNewImage: 'Unggah gambar baru',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Didukung oleh <1>PLANKA</1>',
serverConnectionFailed: 'Koneksi server gagal',
unknownError: 'Kesalahan tidak diketahui, coba lagi nanti.',
useSingleSignOn: 'Gunakan single sign-on',
usernameAlreadyInUse: 'Username telah digunakan',
whoops_title: 'Ups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Batal dan tutup',
continue: 'Lanjutkan',
debugSso: 'Debug SSO',
goBack: 'Kembali',
goHome: 'Ke beranda',
logIn: 'Masuk',
logInWithSso: 'Masuk dengan SSO',
},
},
};
-5
View File
@@ -88,8 +88,6 @@ export default {
'Sei sicuro di voler rimuovere questo amministratore dal progetto?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Sei sicuro di voler rimuovere questo membro dalla bacheca?',
areYouSureYouWantToUnlinkSsoFromThisUser:
"Sei sicuro di voler scollegare SSO da questo utente? Questo permetterà all'utente di accedere con una password.",
assignAsOwner_title: 'Assegna come proprietario',
atLeastOneListMustBePresent: 'Deve essere presente almeno una lista',
attachment: 'Allegato',
@@ -341,7 +339,6 @@ export default {
turnOffRecentCardHighlighting: "Disattiva l'evidenziazione delle scheda recenti",
typeNameToConfirm: 'Digita il nome per confermare.',
typeTitleToConfirm: 'Digita il titolo per confermare.',
unlinkSso_title: 'Scollegamento SSO',
unsavedChanges: 'Modifiche non salvate',
uploadFailedFileIsTooBig: 'Caricamento fallito: il file è troppo grande.',
uploadFailedNotEnoughStorageSpace:
@@ -510,8 +507,6 @@ export default {
start: 'Inizio',
stop: 'Interrompi',
subscribe: 'Iscriviti',
unlinkSso: 'Scollega SSO',
unlinkSso_title: 'Scollega SSO',
unsubscribe: 'Annulla iscrizione',
uploadNewAvatar: 'Carica nuovo avatar',
uploadNewImage: 'Carica nuova immagine',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Powered by <1>PLANKA</1>',
serverConnectionFailed: 'Connesione al server fallita',
unknownError: 'Errore sconosciuto, prova ancora',
useSingleSignOn: 'Accedi con SSO',
usernameAlreadyInUse: 'Username già in uso',
whoops_title: 'Ops!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Annulla e chiudi',
continue: 'Continua',
debugSso: 'Debug SSO',
goBack: 'Torna indietro',
goHome: 'Vai alla home',
logIn: 'Accedi',
logInWithSso: 'Accedi con SSO',
},
},
};
-5
View File
@@ -85,8 +85,6 @@ export default {
'このマネージャーをプロジェクトから外してもよろしいですか?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'このメンバーをボードから外してもよろしいですか?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'このユーザーからSSOのリンクを解除してもよろしいですか?これにより、ユーザーはパスワードでログインできるようになります。',
assignAsOwner_title: 'オーナーとして割り当て',
atLeastOneListMustBePresent: '少なくとも1つのリストが必要です',
attachment: '添付ファイル',
@@ -334,7 +332,6 @@ export default {
turnOffRecentCardHighlighting: '最近のカードのハイライトをオフにする',
typeNameToConfirm: '確認のため名前を入力してください。',
typeTitleToConfirm: '確認のためタイトルを入力してください。',
unlinkSso_title: 'SSOのリンク解除',
unsavedChanges: '未保存の変更',
uploadFailedFileIsTooBig: 'アップロード失敗 - ファイルが大きすぎます。',
uploadFailedNotEnoughStorageSpace: 'アップロード失敗 - ストレージ容量が不足しています。',
@@ -504,8 +501,6 @@ export default {
start: 'スタート',
stop: 'ストップ',
subscribe: '購読',
unlinkSso: 'SSOのリンクを解除',
unlinkSso_title: 'SSOのリンクを解除',
unsubscribe: '購読解除',
uploadNewAvatar: '新しいアバターをアップロード',
uploadNewImage: '新しい画像をアップロード',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: '<1>PLANKA</1>で動作',
serverConnectionFailed: 'サーバーの接続に失敗',
unknownError: '不明なエラーです。後でもう一度試してください。',
useSingleSignOn: 'SSOを使用',
usernameAlreadyInUse: 'ユーザー名は既に使われています',
whoops_title: 'おっと!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'キャンセルして閉じる',
continue: '続行',
debugSso: 'SSOをデバッグ',
goBack: '戻る',
goHome: 'ホームへ',
logIn: 'ログイン',
logInWithSso: 'SSOでログイン',
},
},
};
-5
View File
@@ -79,8 +79,6 @@ export default {
'이 API 키를 재생성하시겠습니까? 이전 키는 더 이상 작동하지 않습니다.',
areYouSureYouWantToRemoveThisManagerFromProject: '이 관리자를 프로젝트에서 제거하시겠습니까?',
areYouSureYouWantToRemoveThisMemberFromBoard: '이 멤버를 보드에서 제거하시겠습니까?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'이 사용자로부터 SSO 연결을 해제하시겠습니까? 이렇게 하면 사용자가 비밀번호로 로그인할 수 있습니다.',
assignAsOwner_title: '소유자로 지정',
atLeastOneListMustBePresent: '최소 하나의 목록이 있어야 합니다',
attachment: '첨부 파일',
@@ -329,7 +327,6 @@ export default {
turnOffRecentCardHighlighting: '최근 카드 강조 표시 끄기',
typeNameToConfirm: '확인하려면 이름을 입력하세요.',
typeTitleToConfirm: '확인하려면 제목을 입력하세요.',
unlinkSso_title: 'SSO 연결 해제',
unsavedChanges: '저장되지 않은 변경사항',
uploadFailedFileIsTooBig: '업로드 실패: 파일이 너무 큽니다.',
uploadFailedNotEnoughStorageSpace: '업로드 실패: 저장 공간이 부족합니다.',
@@ -501,8 +498,6 @@ export default {
start: '시작',
stop: '중지',
subscribe: '구독',
unlinkSso: 'SSO 연결 해제',
unlinkSso_title: 'SSO 연결 해제',
unsubscribe: '구독 취소',
uploadNewAvatar: '새 아바타 업로드',
uploadNewImage: '새 이미지 업로드',
-3
View File
@@ -16,7 +16,6 @@ export default {
poweredByPlanka: '<1>PLANKA</1>로 구동됨',
serverConnectionFailed: '서버 연결 실패',
unknownError: '알 수 없는 오류, 나중에 다시 시도하세요',
useSingleSignOn: 'Single Sign-On(SSO) 사용',
usernameAlreadyInUse: '이미 사용 중인 사용자 이름',
whoops_title: '앗!',
},
@@ -24,11 +23,9 @@ export default {
action: {
cancelAndClose: '취소 후 닫기',
continue: '계속',
debugSso: 'SSO 디버그',
goBack: '뒤로 가기',
goHome: '홈으로 가기',
logIn: '로그인',
logInWithSso: 'SSO로 로그인',
},
},
};
-5
View File
@@ -88,8 +88,6 @@ export default {
'Weet u zeker dat u deze manager uit het project wilt verwijderen?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Weet u zeker dat u dit lid uit het bord wilt verwijderen?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Weet je zeker dat je SSO wilt ontkoppelen van deze gebruiker? Dit stelt de gebruiker in staat om in te loggen met een wachtwoord.',
assignAsOwner_title: 'Toewijzen als eigenaar',
atLeastOneListMustBePresent: 'Er moet ten minste één lijst aanwezig zijn',
attachment: 'Bijlage',
@@ -339,7 +337,6 @@ export default {
turnOffRecentCardHighlighting: 'Recente kaartmarkering uitschakelen',
typeNameToConfirm: 'Typ naam om te bevestigen.',
typeTitleToConfirm: 'Typ titel om te bevestigen.',
unlinkSso_title: 'SSO ontkoppelen',
unsavedChanges: 'Niet-opgeslagen wijzigingen',
uploadFailedFileIsTooBig: 'Upload mislukt: bestand is te groot.',
uploadFailedNotEnoughStorageSpace: 'Upload mislukt: niet genoeg opslagruimte.',
@@ -510,8 +507,6 @@ export default {
start: 'Start',
stop: 'Stop',
subscribe: 'Abonneren',
unlinkSso: 'SSO ontkoppelen',
unlinkSso_title: 'SSO ontkoppelen',
unsubscribe: 'Afmelden',
uploadNewAvatar: 'Nieuwe avatar uploaden',
uploadNewImage: 'Nieuwe afbeelding uploaden',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Mogelijk gemaakt door <1>PLANKA</1>',
serverConnectionFailed: 'Verbinding met de server mislukt',
unknownError: 'Onbekende fout, probeer het later opnieuw',
useSingleSignOn: 'Gebruik single sign-on',
usernameAlreadyInUse: 'Gebruikersnaam is al in gebruik',
whoops_title: 'Oeps!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Annuleren en sluiten',
continue: 'Doorgaan',
debugSso: 'SSO debuggen',
goBack: 'Terug gaan',
goHome: 'Naar startpagina',
logIn: 'Inloggen',
logInWithSso: 'Inloggen met SSO',
},
},
};
-5
View File
@@ -87,8 +87,6 @@ export default {
'Jesteś pewien że chcesz usunąć tego zarządcę z projektu?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Jesteś pewien że chcesz usunąć tego członka z tablicy?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Czy na pewno chcesz odłączyć SSO od tego użytkownika? Pozwoli to użytkownikowi zalogować się przy użyciu hasła.',
assignAsOwner_title: 'Przypisz jako właściciela',
atLeastOneListMustBePresent: 'Przynajmniej jedna lista musi istnieć',
attachment: 'Załącznik',
@@ -338,7 +336,6 @@ export default {
turnOffRecentCardHighlighting: 'Wyłącz podświetlanie nowych kart',
typeNameToConfirm: 'Wpisz nazwę aby potwierdzić.',
typeTitleToConfirm: 'Wpisz tytuł aby potwierdzić.',
unlinkSso_title: 'Odłączanie SSO',
unsavedChanges: 'Niezapisane zmiany',
uploadFailedFileIsTooBig: 'Przesyłanie nie powiodło się: plik jest za duży.',
uploadFailedNotEnoughStorageSpace: 'Przesyłanie nie powiodło się: za mało miejsca na dysku.',
@@ -507,8 +504,6 @@ export default {
start: 'Start',
stop: 'Stop',
subscribe: 'Subskrybuj',
unlinkSso: 'Odłącz SSO',
unlinkSso_title: 'Odłącz SSO',
unsubscribe: 'Odsubskrybuj',
uploadNewAvatar: 'Wgraj nowy awatar',
uploadNewImage: 'Wgraj nowy obraz',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Powered by <1>PLANKA</1>',
serverConnectionFailed: 'Błąd połączenia z serwerem',
unknownError: 'Nieznany błąd, spróbuj ponownie później',
useSingleSignOn: 'Użyj logowania SSO',
usernameAlreadyInUse: 'Nazwa użytkownika nie jest dostępna',
whoops_title: 'Ups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Anuluj i zamknij',
continue: 'Kontynuuj',
debugSso: 'Debuguj SSO',
goBack: 'Wróć',
goHome: 'Idź do domu',
logIn: 'Zaloguj',
logInWithSso: 'Zaloguj z SSO',
},
},
};
-5
View File
@@ -89,8 +89,6 @@ export default {
'Tem certeza de que deseja remover este gerente do projeto?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Tem certeza de que deseja remover este membro do quadro?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Tem certeza de que deseja desvincular o SSO deste usuário? Isso permitirá que o usuário faça login com uma senha.',
assignAsOwner_title: 'Atribuir como proprietário',
atLeastOneListMustBePresent: 'Pelo menos uma lista deve estar presente',
attachment: 'Anexo',
@@ -342,7 +340,6 @@ export default {
turnOffRecentCardHighlighting: 'Desativar destaque de cartões recentes',
typeNameToConfirm: 'Digite o nome para confirmar.',
typeTitleToConfirm: 'Digite o título para confirmar.',
unlinkSso_title: 'Desvinculação de SSO',
unsavedChanges: 'Alterações não salvas',
uploadFailedFileIsTooBig: 'Falha no upload: arquivo muito grande.',
uploadFailedNotEnoughStorageSpace: 'Falha no upload: espaço de armazenamento insuficiente.',
@@ -510,8 +507,6 @@ export default {
start: 'Iniciar',
stop: 'Parar',
subscribe: 'Inscrever-se',
unlinkSso: 'Desvincular SSO',
unlinkSso_title: 'Desvincular SSO',
unsubscribe: 'Cancelar inscrição',
uploadNewAvatar: 'Enviar novo avatar',
uploadNewImage: 'Enviar nova imagem',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Desenvolvido por <1>PLANKA</1>',
serverConnectionFailed: 'Falha na conexão com o servidor',
unknownError: 'Erro desconhecido, tente novamente mais tarde',
useSingleSignOn: 'Usar login único',
usernameAlreadyInUse: 'Nome de usuário já está em uso',
whoops_title: 'Ops!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Cancelar e fechar',
continue: 'Continuar',
debugSso: 'Depurar SSO',
goBack: 'Voltar',
goHome: 'Ir para início',
logIn: 'Entrar',
logInWithSso: 'Entrar com SSO',
},
},
};
-5
View File
@@ -91,8 +91,6 @@ export default {
'Tem a certeza de que pretende remover este gestor do projeto?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Tem a certeza de que pretende remover este membro do quadro?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Tem a certeza de que pretende desvincular o SSO deste utilizador? Isto permitirá que o utilizador inicie sessão com uma palavra-passe.',
assignAsOwner_title: 'Atribuir como proprietário',
atLeastOneListMustBePresent: 'Pelo menos uma lista deve estar presente',
attachment: 'Anexo',
@@ -344,7 +342,6 @@ export default {
turnOffRecentCardHighlighting: 'Desativar destaque de cartões recentes',
typeNameToConfirm: 'Digite o nome para confirmar.',
typeTitleToConfirm: 'Digite o título para confirmar.',
unlinkSso_title: 'Desvinculação de SSO',
unsavedChanges: 'Alterações não guardadas',
uploadFailedFileIsTooBig: 'Carregamento falhado - ficheiro demasiado grande.',
uploadFailedNotEnoughStorageSpace:
@@ -513,8 +510,6 @@ export default {
start: 'Iniciar',
stop: 'Parar',
subscribe: 'Subscrever',
unlinkSso: 'Desvincular SSO',
unlinkSso_title: 'Desvincular SSO',
unsubscribe: 'Cancelar subscrição',
uploadNewAvatar: 'Carregar novo avatar',
uploadNewImage: 'Carregar nova imagem',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Desenvolvido por <1>PLANKA</1>',
serverConnectionFailed: 'Falha na ligação ao servidor',
unknownError: 'Erro desconhecido, tente novamente mais tarde',
useSingleSignOn: 'Utilizar início de sessão único',
usernameAlreadyInUse: 'Nome de utilizador já está em uso',
whoops_title: 'Ups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Cancelar e fechar',
continue: 'Continuar',
debugSso: 'Depurar SSO',
goBack: 'Voltar',
goHome: 'Ir para início',
logIn: 'Iniciar sessão',
logInWithSso: 'Iniciar sessão com SSO',
},
},
};
-5
View File
@@ -85,8 +85,6 @@ export default {
'Sigur doriți să eliminați acest manager din proiect?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Sigur doriți să eliminați acest membru din consiliu?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Sigur doriți să deconectați SSO de la acest utilizator? Acest lucru va permite utilizatorului să se conecteze cu o parolă.',
assignAsOwner_title: 'Atribuie ca proprietar',
atLeastOneListMustBePresent: 'Cel puțin o listă trebuie să fie prezentă',
attachment: 'Atașament',
@@ -337,7 +335,6 @@ export default {
turnOffRecentCardHighlighting: 'Oprește evidențierea cardurilor recente',
typeNameToConfirm: 'Tastează numele pentru confirmare.',
typeTitleToConfirm: 'Tastează titlul pentru confirmare.',
unlinkSso_title: 'Deconectarea SSO',
unsavedChanges: 'Modificări nesalvate',
uploadFailedFileIsTooBig: 'Încărcarea a eșuat: fișierul este prea mare.',
uploadFailedNotEnoughStorageSpace: 'Încărcarea a eșuat: spațiu de stocare insuficient.',
@@ -507,8 +504,6 @@ export default {
start: 'Start',
stop: 'Stop',
subscribe: 'Abonati-va',
unlinkSso: 'Deconectează SSO',
unlinkSso_title: 'Deconectează SSO',
unsubscribe: 'Dezabonați-vă',
uploadNewAvatar: 'Încărcați un avatar nou',
uploadNewImage: 'Încărcați o nouă imagine',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Susținut de <1>PLANKA</1>',
serverConnectionFailed: 'Conexiunea la server a eșuat',
unknownError: 'Eroarea necunoscuta, mai incercați',
useSingleSignOn: 'Folosiți autentificarea unica',
usernameAlreadyInUse: 'Nume utilizator deja exista',
whoops_title: 'Ups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Anulează și închide',
continue: 'Continuă',
debugSso: 'Depanează SSO',
goBack: 'Înapoi',
goHome: 'Acasă',
logIn: 'Autentificarea',
logInWithSso: 'Autentificarea cu SSO',
},
},
};
-5
View File
@@ -89,8 +89,6 @@ export default {
'Вы уверены, что хотите удалить этого менеджера из проекта?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Вы уверены, что хотите удалить этого участника из доски?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Вы уверены, что хотите отвязать SSO от этого пользователя? Это позволит пользователю входить с помощью пароля.',
assignAsOwner_title: 'Назначить владельцем',
atLeastOneListMustBePresent: 'Должен быть хотя бы один список',
attachment: 'Вложение',
@@ -340,7 +338,6 @@ export default {
turnOffRecentCardHighlighting: 'Выключить подсветку последних карточек',
typeNameToConfirm: 'Введите имя для подтверждения.',
typeTitleToConfirm: 'Введите название для подтверждения.',
unlinkSso_title: 'Отвязка SSO',
unsavedChanges: 'Несохранённые изменения',
uploadFailedFileIsTooBig: 'Загрузка не удалась: файл слишком большой.',
uploadFailedNotEnoughStorageSpace: 'Загрузка не удалась: недостаточно места для хранения.',
@@ -509,8 +506,6 @@ export default {
start: 'Начать',
stop: 'Остановить',
subscribe: 'Подписаться',
unlinkSso: 'Отвязать SSO',
unlinkSso_title: 'Отвязать SSO',
unsubscribe: 'Отписаться',
uploadNewAvatar: 'Загрузить новый аватар',
uploadNewImage: 'Загрузить новое изображение',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Powered by <1>PLANKA</1>',
serverConnectionFailed: 'Не могу подключиться к серверу',
unknownError: 'Что-то пошло не так, попробуйте позже',
useSingleSignOn: 'Используйте единый вход',
usernameAlreadyInUse: 'Имя пользователя уже занято',
whoops_title: 'Упс!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Отменить и закрыть',
continue: 'Продолжить',
debugSso: 'Отладить SSO',
goBack: 'Назад',
goHome: 'На главную',
logIn: 'Войти',
logInWithSso: 'Войти с помощью единого входа',
},
},
};
-5
View File
@@ -83,8 +83,6 @@ export default {
'Naozaj chcete zmazať daného správcu tohto projektu?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Naozaj chcete odstrániť tohoto člena z tabule?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Naozaj chcete odpojiť SSO od tohto používateľa? Tým umožníte používateľovi prihlásiť sa pomocou hesla.',
assignAsOwner_title: 'Prideliť ako vlastníka',
atLeastOneListMustBePresent: 'Musí byť prítomný aspoň jeden zoznam',
attachment: 'Príloha',
@@ -332,7 +330,6 @@ export default {
turnOffRecentCardHighlighting: 'Vypnúť zvýrazňovanie nedávnych kariet',
typeNameToConfirm: 'Zadajte meno na potvrdenie.',
typeTitleToConfirm: 'Zadajte názov na potvrdenie.',
unlinkSso_title: 'Odpojenie SSO',
unsavedChanges: 'Neuložené zmeny',
uploadFailedFileIsTooBig: 'Nahrávanie zlyhalo: súbor je príliš veľký.',
uploadFailedNotEnoughStorageSpace: 'Nahrávanie zlyhalo: nedostatok úložného priestoru.',
@@ -500,8 +497,6 @@ export default {
start: 'Start',
stop: 'Stop',
subscribe: 'Odoberať',
unlinkSso: 'Odpojiť SSO',
unlinkSso_title: 'Odpojiť SSO',
unsubscribe: 'Neodoberať',
uploadNewAvatar: 'Nahrať nový avatar',
uploadNewImage: 'Nahrať nový obrázok',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Poháňané <1>PLANKA</1>',
serverConnectionFailed: 'Pripojenie k serveru zlyhalo',
unknownError: 'Neznáma chyba, skúste to neskôr',
useSingleSignOn: 'Použiť jednotné prihlásenie',
usernameAlreadyInUse: 'Používateľské meno je zabrané',
whoops_title: 'Ups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Zrušiť a zavrieť',
continue: 'Pokračovať',
debugSso: 'Ladiť SSO',
goBack: 'Ísť späť',
goHome: 'Ísť domov',
logIn: 'Prihlásiť sa',
logInWithSso: 'Prihlásiť sa cez SSO',
},
},
};
-5
View File
@@ -87,8 +87,6 @@ export default {
'Да ли заиста желите да уклоните овог руководиоца из овог пројекта?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Да ли заиста желите да уклоните овог члана из ове табле?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Да ли сте сигурни да желите да одвојите SSO са овог корисника? Ово ће омогућити кориснику да се пријави помоћу лозинке.',
assignAsOwner_title: 'Додели као власника',
atLeastOneListMustBePresent: 'Мора постојати најмање једна листа',
attachment: 'Прилог',
@@ -335,7 +333,6 @@ export default {
turnOffRecentCardHighlighting: 'Искључи истицање скорашњих картица',
typeNameToConfirm: 'Укуцај име за потврду.',
typeTitleToConfirm: 'Укуцај наслов за потврду.',
unlinkSso_title: 'Одвајање SSO',
unsavedChanges: 'Несачуване промене',
uploadFailedFileIsTooBig: 'Слање неуспешно: датотека је превелика.',
uploadFailedNotEnoughStorageSpace: 'Слање неуспешно: нема довољно простора за складиштење.',
@@ -503,8 +500,6 @@ export default {
start: 'Почни',
stop: 'Заустави',
subscribe: 'Претплати се',
unlinkSso: 'Одвоји SSO',
unlinkSso_title: 'Одвоји SSO',
unsubscribe: 'Укини претплату',
uploadNewAvatar: 'Постави нови аватар',
uploadNewImage: 'Постави нову слику',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Покреће <1>PLANKA</1>',
serverConnectionFailed: 'Неуспешна конекција са сервером',
unknownError: 'Непозната грешка, покушајте поново касније',
useSingleSignOn: 'Користи универзалну пријаву',
usernameAlreadyInUse: 'Корисничко име је већ у употреби',
whoops_title: 'Упс!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Откажи и затвори',
continue: 'Настави',
debugSso: 'Дебагуј SSO',
goBack: 'Назад',
goHome: 'Иди кући',
logIn: 'Пријава',
logInWithSso: 'Пријава са УП',
},
},
};
-5
View File
@@ -88,8 +88,6 @@ export default {
'Da li zaista želite da uklonite ovog rukovodioca iz ovog projekta?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Da li zaista želite da uklonite ovog člana iz ove table?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Da li ste sigurni da želite da odvojite SSO sa ovog korisnika? Ovo će omogućiti korisniku da se prijavi pomoću lozinke.',
assignAsOwner_title: 'Dodeli kao vlasnika',
atLeastOneListMustBePresent: 'Mora postojati najmanje jedna lista',
attachment: 'Prilog',
@@ -336,7 +334,6 @@ export default {
turnOffRecentCardHighlighting: 'Isključi isticanje skorašnjih kartica',
typeNameToConfirm: 'Ukucaj ime za potvrdu.',
typeTitleToConfirm: 'Ukucaj naslov za potvrdu.',
unlinkSso_title: 'Odvajanje SSO',
unsavedChanges: 'Nesačuvane promene',
uploadFailedFileIsTooBig: 'Slanje neuspešno: datoteka je prevelika.',
uploadFailedNotEnoughStorageSpace:
@@ -505,8 +502,6 @@ export default {
start: 'Počni',
stop: 'Zaustavi',
subscribe: 'Pretplati se',
unlinkSso: 'Odvoji SSO',
unlinkSso_title: 'Odvoji SSO',
unsubscribe: 'Ukini pretplatu',
uploadNewAvatar: 'Postavi novi avatar',
uploadNewImage: 'Postavi novu sliku',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Pokreće <1>PLANKA</1>',
serverConnectionFailed: 'Neuspešna konekcija sa serverom',
unknownError: 'Nepoznata greška, pokušajte ponovo kasnije',
useSingleSignOn: 'Koristi univerzalnu prijavu',
usernameAlreadyInUse: 'Korisničko ime je već u upotrebi',
whoops_title: 'Ups!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Otkaži i zatvori',
continue: 'Nastavi',
debugSso: 'Debaguj SSO',
goBack: 'Nazad',
goHome: 'Idi kući',
logIn: 'Prijava',
logInWithSso: 'Prijava sa UP',
},
},
};
-5
View File
@@ -93,8 +93,6 @@ export default {
'Är du säker på att du vill ta bort den här projektledaren från projektet?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Är du säker på att du vill ta bort den här medlemmen från tavlan?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Är du säker på att du vill avlänka SSO från den här användaren? Detta kommer att tillåta användaren att logga in med ett lösenord.',
assignAsOwner_title: 'Tilldela som ägare',
atLeastOneListMustBePresent: 'Minst en lista måste finnas',
attachment: 'Bilaga',
@@ -345,7 +343,6 @@ export default {
turnOffRecentCardHighlighting: 'Stäng av markering av senaste kort',
typeNameToConfirm: 'Skriv namn för att bekräfta.',
typeTitleToConfirm: 'Skriv titel för att bekräfta.',
unlinkSso_title: 'Avlänkning av SSO',
unsavedChanges: 'Osparade ändringar',
uploadFailedFileIsTooBig: 'Uppladdning misslyckades: filen är för stor.',
uploadFailedNotEnoughStorageSpace:
@@ -514,8 +511,6 @@ export default {
start: 'Starta',
stop: 'Stoppa',
subscribe: 'Prenumerera',
unlinkSso: 'Avlänka SSO',
unlinkSso_title: 'Avlänka SSO',
unsubscribe: 'Avprenumerera',
uploadNewAvatar: 'Ladda upp ny avatar',
uploadNewImage: 'Ladda upp ny bild',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Drivs av <1>PLANKA</1>',
serverConnectionFailed: 'Server connection failed',
unknownError: 'Okänt fel, försök igen senare',
useSingleSignOn: 'Använd enkel inloggning',
usernameAlreadyInUse: 'Användarnamnet används redan',
whoops_title: 'Hoppsan!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Avbryt och stäng',
continue: 'Fortsätt',
debugSso: 'Felsök SSO',
goBack: 'Gå tillbaka',
goHome: 'Gå hem',
logIn: 'Logga in',
logInWithSso: 'Logga in med SSO',
},
},
};
-5
View File
@@ -90,8 +90,6 @@ export default {
'Bu yöneticiyi projeden çıkarmak istediğinizden emin misiniz?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Bu üyeyi panodan çıkarmak istediğinizden emin misiniz?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Bu kullanıcıdan SSO bağlantısını kaldırmak istediğinizden emin misiniz? Bu, kullanıcının şifre ile giriş yapmasına izin verecektir.',
assignAsOwner_title: 'Sahip olarak ata',
atLeastOneListMustBePresent: 'En az bir liste bulunmalıdır',
attachment: 'ek',
@@ -338,7 +336,6 @@ export default {
turnOffRecentCardHighlighting: 'Son kart vurgulamasını kapat',
typeNameToConfirm: 'Onaylamak için adı yazın.',
typeTitleToConfirm: 'Onaylamak için başlığı yazın.',
unlinkSso_title: 'SSO bağlantısını kaldırma',
unsavedChanges: 'Kaydedilmemiş değişiklikler',
uploadFailedFileIsTooBig: 'Yükleme başarısız: dosya çok büyük.',
uploadFailedNotEnoughStorageSpace: 'Yükleme başarısız: yeterli depolama alanı yok.',
@@ -510,8 +507,6 @@ export default {
start: 'başlat',
stop: 'dur',
subscribe: 'Abone ol',
unlinkSso: 'SSO bağlantısını kaldır',
unlinkSso_title: 'SSO bağlantısını kaldır',
unsubscribe: 'Abonelikten çık',
uploadNewAvatar: 'Yeni avatar yükle',
uploadNewImage: 'Yeni resim yükle',
-3
View File
@@ -16,7 +16,6 @@ export default {
poweredByPlanka: 'PLANKA tarafından desteklenmektedir',
serverConnectionFailed: 'Sunucu bağlantı hatası',
unknownError: 'Bilinmeyen hata, daha sonra tekrar deneyin',
useSingleSignOn: 'Tek oturum açma kullan',
usernameAlreadyInUse: 'Kullanıcı adı zaten kullanımda',
whoops_title: 'Hata!',
},
@@ -24,11 +23,9 @@ export default {
action: {
cancelAndClose: 'İptal et ve kapat',
continue: 'Devam et',
debugSso: 'SSO hatalarını ayıkla',
goBack: 'Geri dön',
goHome: 'Ana sayfaya git',
logIn: 'Giriş yap',
logInWithSso: 'SSO ile giriş yap',
},
},
};
-5
View File
@@ -88,8 +88,6 @@ export default {
'Ви впевнені, що хочете видалити цього менеджера з проекту?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Ви впевнені, що хочете видалити цього учасника з дошки?',
areYouSureYouWantToUnlinkSsoFromThisUser:
"Ви впевнені, що хочете відв'язати SSO від цього користувача? Це дозволить користувачу входити за допомогою пароля.",
assignAsOwner_title: 'Призначити власником',
atLeastOneListMustBePresent: 'Принаймні один список повинен бути присутнім',
attachment: 'Вкладення',
@@ -337,7 +335,6 @@ export default {
turnOffRecentCardHighlighting: 'Вимкнути підсвічування останніх карток',
typeNameToConfirm: "Введіть ім'я для підтвердження.",
typeTitleToConfirm: 'Введіть назву, щоб підтвердити.',
unlinkSso_title: "Відв'язка SSO",
unsavedChanges: 'Незбережені зміни',
uploadFailedFileIsTooBig: 'Помилка завантаження: файл занадто великий.',
uploadFailedNotEnoughStorageSpace: 'Помилка завантаження: недостатньо місця для зберігання.',
@@ -505,8 +502,6 @@ export default {
start: 'Почати',
stop: 'Зупинити',
subscribe: 'Підписатися',
unlinkSso: "Відв'язати SSO",
unlinkSso_title: "Відв'язати SSO",
unsubscribe: 'Відписатися',
uploadNewAvatar: 'Завантажити новий аватар',
uploadNewImage: 'Завантажити нове зображення',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'Працює на <1>PLANKA</1>',
serverConnectionFailed: 'Не вдалося підключитися до сервера',
unknownError: 'Невідома помилка, спробуйте ще раз пізніше',
useSingleSignOn: 'Використовувати одночасний вхід',
usernameAlreadyInUse: "Ім'я користувача вже використовується",
whoops_title: 'Ой!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Скасувати та закрити',
continue: 'Продовжити',
debugSso: 'Відлагодити SSO',
goBack: 'Назад',
goHome: 'На головну',
logIn: 'Увійти',
logInWithSso: 'Увійти за допомогою SSO',
},
},
};
-5
View File
@@ -83,8 +83,6 @@ export default {
areYouSureYouWantToRemoveThisManagerFromProject:
"Ushbu boshqaruvchini loyihadan o'chirmoqchimisiz?",
areYouSureYouWantToRemoveThisMemberFromBoard: "Ushbu a'zoni doskadan o'chirmoqchimisiz?",
areYouSureYouWantToUnlinkSsoFromThisUser:
"Haqiqatan ham bu foydalanuvchidan SSO bog'lanishini uzishni xohlaysizmi? Bu foydalanuvchiga parol bilan kirishga imkon beradi.",
assignAsOwner_title: 'Egasi sifatida tayinlash',
atLeastOneListMustBePresent: "Kamida bitta ro'yxat bo'lishi kerak",
attachment: 'Ilova',
@@ -333,7 +331,6 @@ export default {
turnOffRecentCardHighlighting: "So'nggi kartalarni ajratib ko'rsatishni o'chirish",
typeNameToConfirm: 'Tasdiqlash uchun nomni kiriting.',
typeTitleToConfirm: 'Tasdiqlash uchun sarlavhani kiriting.',
unlinkSso_title: "SSO bog'lanishini uzish",
unsavedChanges: "Saqlanmagan o'zgarishlar",
uploadFailedFileIsTooBig: 'Yuklash muvaffaqiyatsiz: fayl juda katta.',
uploadFailedNotEnoughStorageSpace: 'Yuklash muvaffaqiyatsiz: saqlash joyi yetarli emas.',
@@ -503,8 +500,6 @@ export default {
start: 'Boshlash',
stop: "To'xtatish",
subscribe: "Obuna bo'lish",
unlinkSso: "SSO bog'lanishini uzish",
unlinkSso_title: "SSO bog'lanishini uzish",
unsubscribe: 'Obunani bekor qilish',
uploadNewAvatar: 'Yangi avatar yuklash',
uploadNewImage: 'Yangi rasm yuklash',
-3
View File
@@ -17,7 +17,6 @@ export default {
poweredByPlanka: 'PLANKA tomonidan quvvatlanadi',
serverConnectionFailed: "Serverga bog'lanish xatosi",
unknownError: "Noma'lum xatolik, qaytadan urinib ko'ring",
useSingleSignOn: 'Yagona kirish tizimidan foydalaning',
usernameAlreadyInUse: 'Foydalanuvchi nomi allaqachon mavjud',
whoops_title: 'Voy!',
},
@@ -25,11 +24,9 @@ export default {
action: {
cancelAndClose: 'Bekor qilish va yopish',
continue: 'Davom etish',
debugSso: 'SSO ni tuzatish',
goBack: 'Orqaga',
goHome: 'Bosh sahifaga',
logIn: 'Kirish',
logInWithSso: 'SSO orqali kirish',
},
},
};
-5
View File
@@ -89,8 +89,6 @@ export default {
'Bạn có chắc chắn muốn xóa quản lý này khỏi dự án không?',
areYouSureYouWantToRemoveThisMemberFromBoard:
'Bạn có chắc chắn muốn xóa thành viên này khỏi bảng không?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'Bạn có chắc chắn muốn hủy liên kết SSO khỏi người dùng này không? Điều này sẽ cho phép người dùng đăng nhập bằng mật khẩu.',
assignAsOwner_title: 'Chỉ định làm chủ sở hữu',
atLeastOneListMustBePresent: 'Phải có ít nhất một danh sách',
attachment: 'Tệp đính kèm',
@@ -337,7 +335,6 @@ export default {
turnOffRecentCardHighlighting: 'Tắt làm nổi bật thẻ gần đây',
typeNameToConfirm: 'Nhập tên để xác nhận.',
typeTitleToConfirm: 'Nhập tiêu đề để xác nhận.',
unlinkSso_title: 'Hủy liên kết SSO',
unsavedChanges: 'Thay đổi chưa được lưu',
uploadFailedFileIsTooBig: 'Tải lên thất bại: Tệp quá lớn.',
uploadFailedNotEnoughStorageSpace: 'Tải lên thất bại: Không đủ không gian lưu trữ.',
@@ -505,8 +502,6 @@ export default {
start: 'Bắt đầu',
stop: 'Dừng',
subscribe: 'Đăng ký theo dõi',
unlinkSso: 'Hủy liên kết SSO',
unlinkSso_title: 'Hủy liên kết SSO',
unsubscribe: 'Hủy đăng ký theo dõi',
uploadNewAvatar: 'Tải lên ảnh đại diện mới',
uploadNewImage: 'Tải lên ảnh mới',
-3
View File
@@ -16,7 +16,6 @@ export default {
poweredByPlanka: 'Được phát triển bởi <1>PLANKA</1>',
serverConnectionFailed: 'Không kết nối được tới máy chủ',
unknownError: 'Lỗi không xác định, thử lại sau',
useSingleSignOn: 'Sử dụng đăng nhập một lần (SSO)',
usernameAlreadyInUse: 'Tên đăng nhập đã được sử dụng',
whoops_title: 'Ôi thôi chếcccc!',
},
@@ -24,11 +23,9 @@ export default {
action: {
cancelAndClose: 'Hủy và đóng',
continue: 'Tiếp tục',
debugSso: 'Gỡ lỗi SSO',
goBack: 'Quay lại',
goHome: 'Về trang chủ',
logIn: 'Đăng nhập',
logInWithSso: 'Đăng nhập bằng SSO',
},
},
};
-5
View File
@@ -75,8 +75,6 @@ export default {
areYouSureYouWantToRegenerateThisApiKey: '确认重新生成此API密钥吗?之前的密钥将不再有效。',
areYouSureYouWantToRemoveThisManagerFromProject: '确认从本项目删除该管理员吗?',
areYouSureYouWantToRemoveThisMemberFromBoard: '确认本面板删除该成员吗?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'您确定要取消此用户的SSO链接吗?这将允许用户使用密码登录。',
assignAsOwner_title: '指定为所有者',
atLeastOneListMustBePresent: '至少需要存在一个列表',
attachment: '附件',
@@ -315,7 +313,6 @@ export default {
turnOffRecentCardHighlighting: '关闭最近卡片高亮',
typeNameToConfirm: '输入名称以确认。',
typeTitleToConfirm: '输入标题以确认。',
unlinkSso_title: '取消SSO链接',
unsavedChanges: '未保存的更改',
uploadFailedFileIsTooBig: '上传失败:文件太大。',
uploadFailedNotEnoughStorageSpace: '上传失败:存储空间不足。',
@@ -480,8 +477,6 @@ export default {
start: '开始',
stop: '结束',
subscribe: '关注',
unlinkSso: '取消SSO链接',
unlinkSso_title: '取消SSO链接',
unsubscribe: '取消关注',
uploadNewAvatar: '上传新头像',
uploadNewImage: '上传图片',
-3
View File
@@ -16,7 +16,6 @@ export default {
poweredByPlanka: '技术支持由<1>PLANKA</1>提供',
serverConnectionFailed: '服务器连接失败',
unknownError: '未知错误,请稍后重试',
useSingleSignOn: '使用单点登录',
usernameAlreadyInUse: '用户名已被占用',
whoops_title: '哎呀!',
},
@@ -24,11 +23,9 @@ export default {
action: {
cancelAndClose: '取消并关闭',
continue: '继续',
debugSso: '调试SSO',
goBack: '返回',
goHome: '回到首页',
logIn: '登录',
logInWithSso: '使用SSO登录',
},
},
};
-5
View File
@@ -75,8 +75,6 @@ export default {
areYouSureYouWantToRegenerateThisApiKey: '確認重新產生此API金鑰嗎?之前的金鑰將不再有效。',
areYouSureYouWantToRemoveThisManagerFromProject: '確認從此專案中刪除該管理員嗎?',
areYouSureYouWantToRemoveThisMemberFromBoard: '確認從此看板中刪除該成員嗎?',
areYouSureYouWantToUnlinkSsoFromThisUser:
'您確定要取消此使用者的SSO連結嗎?這將允許使用者使用密碼登入。',
assignAsOwner_title: '指派為擁有者',
atLeastOneListMustBePresent: '至少必須有一個列表',
attachment: '附件',
@@ -315,7 +313,6 @@ export default {
turnOffRecentCardHighlighting: '關閉最近卡片高亮顯示',
typeNameToConfirm: '輸入名稱以確認。',
typeTitleToConfirm: '輸入標題以確認。',
unlinkSso_title: '取消SSO連結',
unsavedChanges: '未保存的更改',
uploadFailedFileIsTooBig: '上傳失敗:檔案太大。',
uploadFailedNotEnoughStorageSpace: '上傳失敗:儲存空間不足。',
@@ -480,8 +477,6 @@ export default {
start: '開始',
stop: '結束',
subscribe: '訂閱',
unlinkSso: '取消SSO連結',
unlinkSso_title: '取消SSO連結',
unsubscribe: '取消訂閱',
uploadNewAvatar: '上傳新頭像',
uploadNewImage: '上傳圖片',
-3
View File
@@ -16,7 +16,6 @@ export default {
poweredByPlanka: '技術支援由<1>PLANKA</1>提供',
serverConnectionFailed: '伺服器連接失敗',
unknownError: '未知錯誤,請稍後重試',
useSingleSignOn: '使用單一登入',
usernameAlreadyInUse: '使用者名稱已被佔用',
whoops_title: '哎呀!',
},
@@ -24,11 +23,9 @@ export default {
action: {
cancelAndClose: '取消並關閉',
continue: '繼續',
debugSso: '偵錯SSO',
goBack: '返回',
goHome: '回到首頁',
logIn: '登入',
logInWithSso: '使用SSO登入',
},
},
};
-1
View File
@@ -78,7 +78,6 @@ export default class extends BaseModel {
subscribeToCardWhenCommenting: attr(),
turnOffRecentCardHighlighting: attr(),
isDefaultAdmin: attr(),
isSsoUser: attr(),
isDeactivated: attr(),
lockedFieldNames: attr(),
isAvatarUpdating: attr({
-1
View File
@@ -15,7 +15,6 @@ const initialState = {
export default (state = initialState, { type, payload }) => {
switch (type) {
case ActionTypes.AUTHENTICATE__SUCCESS:
case ActionTypes.WITH_OIDC_AUTHENTICATE__SUCCESS:
case ActionTypes.TERMS_ACCEPT__SUCCESS:
return {
...state,
-1
View File
@@ -33,7 +33,6 @@ export default (state = initialState, { type, payload }) => {
bootstrap: payload.bootstrap,
};
case ActionTypes.AUTHENTICATE__SUCCESS:
case ActionTypes.WITH_OIDC_AUTHENTICATE__SUCCESS:
case ActionTypes.TERMS_ACCEPT__SUCCESS:
return {
...state,
@@ -3,10 +3,7 @@
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
*/
import { LOCATION_CHANGE_HANDLE } from '../../lib/redux-router';
import ActionTypes from '../../constants/ActionTypes';
import Paths from '../../constants/Paths';
const initialState = {
data: {
@@ -14,9 +11,7 @@ const initialState = {
password: '',
},
isSubmitting: false,
isSubmittingWithOidc: false,
error: null,
debugLogs: null,
pendingToken: null,
step: null,
termsForm: {
@@ -30,15 +25,6 @@ const initialState = {
// eslint-disable-next-line default-param-last
export default (state = initialState, { type, payload }) => {
switch (type) {
case LOCATION_CHANGE_HANDLE:
if (payload.location.pathname === Paths.OIDC_CALLBACK) {
return {
...state,
isSubmittingWithOidc: true,
};
}
return state;
case ActionTypes.AUTHENTICATE:
return {
...state,
@@ -49,7 +35,6 @@ export default (state = initialState, { type, payload }) => {
isSubmitting: true,
};
case ActionTypes.AUTHENTICATE__SUCCESS:
case ActionTypes.WITH_OIDC_AUTHENTICATE__SUCCESS:
case ActionTypes.TERMS_ACCEPT__SUCCESS:
case ActionTypes.TERMS_CANCEL__SUCCESS:
case ActionTypes.TERMS_CANCEL__FAILURE:
@@ -73,31 +58,6 @@ export default (state = initialState, { type, payload }) => {
isSubmitting: false,
error: payload.error,
};
case ActionTypes.WITH_OIDC_AUTHENTICATE__FAILURE:
if (payload.terms) {
return {
...state,
data: initialState.data,
pendingToken: payload.error.pendingToken,
step: payload.error.step,
termsForm: {
...state.termsForm,
payload: payload.terms,
},
};
}
return {
...state,
isSubmittingWithOidc: false,
error: payload.error,
};
case ActionTypes.WITH_OIDC_AUTHENTICATE__DEBUG:
return {
...state,
isSubmittingWithOidc: false,
debugLogs: payload.logs,
};
case ActionTypes.AUTHENTICATE_ERROR_CLEAR:
return {
...state,
+1 -14
View File
@@ -3,12 +3,11 @@
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
*/
import { apply, fork, select, take } from 'redux-saga/effects';
import { apply, fork, take } from 'redux-saga/effects';
import watchers from './watchers';
import services from './services';
import runWatchers from '../run-watchers';
import selectors from '../../selectors';
import { socket } from '../../api';
import ActionTypes from '../../constants/ActionTypes';
import Paths from '../../constants/Paths';
@@ -21,17 +20,5 @@ export default function* coreSaga() {
yield take(ActionTypes.LOGOUT);
const oidcBootstrap = yield select(selectors.selectOidcBootstrap);
if (oidcBootstrap && oidcBootstrap.endSessionUrl !== null) {
const currentUser = yield select(selectors.selectCurrentUser);
if (!currentUser || currentUser.isSsoUser) {
// Redirect the user to the IDP to log out.
window.location.href = oidcBootstrap.endSessionUrl;
return;
}
}
window.location.href = Paths.LOGIN;
}
-1
View File
@@ -53,7 +53,6 @@ export function* handleLocationChange() {
switch (pathsMatch.pattern.path) {
case Paths.LOGIN:
case Paths.OIDC_CALLBACK:
yield call(goToRoot);
break;
+1 -5
View File
@@ -15,11 +15,7 @@ export default function* loginSaga() {
yield fork(services.initializeLogin);
yield take([
ActionTypes.AUTHENTICATE__SUCCESS,
ActionTypes.WITH_OIDC_AUTHENTICATE__SUCCESS,
ActionTypes.TERMS_ACCEPT__SUCCESS,
]);
yield take([ActionTypes.AUTHENTICATE__SUCCESS, ActionTypes.TERMS_ACCEPT__SUCCESS]);
yield cancel(watcherTasks);
yield call(services.goToRoot);
-104
View File
@@ -3,16 +3,13 @@
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
*/
import { nanoid } from 'nanoid';
import { call, put, select } from 'redux-saga/effects';
import { replace } from '../../../lib/redux-router';
import selectors from '../../../selectors';
import actions from '../../../actions';
import api from '../../../api';
import i18n from '../../../i18n';
import { setAccessToken } from '../../../utils/access-token-storage';
import Paths from '../../../constants/Paths';
import AccessTokenSteps from '../../../constants/AccessTokenSteps';
export function* initializeLogin() {
@@ -41,105 +38,6 @@ export function* authenticate(data) {
yield put(actions.authenticate.success(accessToken));
}
export function* authenticateWithOidc() {
const oidcBootstrap = yield select(selectors.selectOidcBootstrap);
const state = nanoid();
window.localStorage.setItem('oidc-state', state);
const nonce = nanoid();
window.localStorage.setItem('oidc-nonce', nonce);
let redirectUrl = `${oidcBootstrap.authorizationUrl}`;
redirectUrl += `&state=${encodeURIComponent(state)}`;
redirectUrl += `&nonce=${encodeURIComponent(nonce)}`;
window.location.href = redirectUrl;
}
export function* authenticateWithOidcCallback() {
// https://github.com/plankanban/planka/issues/511#issuecomment-1771385639
const params = new URLSearchParams(window.location.hash.substring(1) || window.location.search);
const state = window.localStorage.getItem('oidc-state');
window.localStorage.removeItem('oidc-state');
const nonce = window.localStorage.getItem('oidc-nonce');
window.localStorage.removeItem('oidc-nonce');
yield put(replace(Paths.LOGIN));
if (params.get('error') !== null) {
yield put(
actions.authenticateWithOidc.failure(
new Error(
`OIDC Authorization error: ${params.get('error')}: ${params.get('error_description')}`,
),
),
);
return;
}
const code = params.get('code');
if (code === null) {
yield put(
actions.authenticateWithOidc.failure(new Error('Invalid OIDC response: no code parameter')),
);
return;
}
if (params.get('state') !== state) {
yield put(
actions.authenticateWithOidc.failure(
new Error('Unable to process OIDC response: state mismatch'),
),
);
return;
}
if (nonce === null) {
yield put(
actions.authenticateWithOidc.failure(
new Error('Unable to process OIDC response: no nonce issued'),
),
);
return;
}
const oidcBootstrap = yield select(selectors.selectOidcBootstrap);
if (oidcBootstrap?.debug) {
const {
included: { logs },
} = yield call(api.debugOidc, {
code,
nonce,
});
yield put(actions.authenticateWithOidc.debug(logs));
return;
}
let accessToken;
try {
({ item: accessToken } = yield call(api.exchangeForAccessTokenWithOidc, {
code,
nonce,
}));
} catch (error) {
let terms;
if (error.step === AccessTokenSteps.ACCEPT_TERMS) {
({ item: terms } = yield call(api.getTerms, i18n.resolvedLanguage));
}
yield put(actions.authenticateWithOidc.failure(error, terms));
return;
}
yield call(setAccessToken, accessToken);
yield put(actions.authenticateWithOidc.success(accessToken));
}
export function* clearAuthenticateError() {
yield put(actions.clearAuthenticateError());
}
@@ -199,8 +97,6 @@ export function* updateTermsLanguage(value) {
export default {
initializeLogin,
authenticate,
authenticateWithOidc,
authenticateWithOidcCallback,
clearAuthenticateError,
acceptTerms,
cancelTerms,
-18
View File
@@ -6,7 +6,6 @@
import { call, put, select, take } from 'redux-saga/effects';
import { push } from '../../../lib/redux-router';
import { authenticateWithOidc, authenticateWithOidcCallback } from './login';
import selectors from '../../../selectors';
import ActionTypes from '../../../constants/ActionTypes';
import Paths from '../../../constants/Paths';
@@ -48,23 +47,6 @@ export function* handleLocationChange() {
}
switch (pathsMatch.pattern.path) {
case Paths.LOGIN: {
const oidcBootstrap = yield select(selectors.selectOidcBootstrap);
if (oidcBootstrap) {
const params = new URLSearchParams(window.location.search);
if (params.has('authenticateWithOidc')) {
yield call(authenticateWithOidc);
}
}
break;
}
case Paths.OIDC_CALLBACK:
yield call(authenticateWithOidcCallback);
break;
default:
}
}
-1
View File
@@ -13,7 +13,6 @@ export default function* loginWatchers() {
takeEvery(EntryActionTypes.AUTHENTICATE, ({ payload: { data } }) =>
services.authenticate(data),
),
takeEvery(EntryActionTypes.WITH_OIDC_AUTHENTICATE, () => services.authenticateWithOidc()),
takeEvery(EntryActionTypes.AUTHENTICATE_ERROR_CLEAR, () => services.clearAuthenticateError()),
takeEvery(EntryActionTypes.TERMS_ACCEPT, ({ payload: { signature } }) =>
services.acceptTerms(signature),
-3
View File
@@ -9,8 +9,6 @@ export const selectIsInitializing = ({ common: { isInitializing } }) => isInitia
export const selectBootstrap = ({ common: { bootstrap } }) => bootstrap;
export const selectOidcBootstrap = (state) => selectBootstrap(state).oidc;
export const selectActiveUsersLimit = (state) => selectBootstrap(state).activeUsersLimit;
export const selectAccessToken = ({ auth: { accessToken } }) => accessToken;
@@ -27,7 +25,6 @@ export default {
selectIsSocketDisconnected,
selectIsInitializing,
selectBootstrap,
selectOidcBootstrap,
selectActiveUsersLimit,
selectAccessToken,
selectAuthenticateForm,