diff --git a/src/components/Settings/SettingsUsers/index.tsx b/src/components/Settings/SettingsUsers/index.tsx
index 76f41a5a00..f0aad2aebd 100644
--- a/src/components/Settings/SettingsUsers/index.tsx
+++ b/src/components/Settings/SettingsUsers/index.tsx
@@ -1,3 +1,4 @@
+import Alert from '@app/components/Common/Alert';
import Button from '@app/components/Common/Button';
import LabeledCheckbox from '@app/components/Common/LabeledCheckbox';
import LoadingSpinner from '@app/components/Common/LoadingSpinner';
@@ -39,6 +40,8 @@ const messages = defineMessages('components.Settings.SettingsUsers', {
tvRequestLimitLabel: 'Global Series Request Limit',
defaultPermissions: 'Default Permissions',
defaultPermissionsTip: 'Initial permissions assigned to new users',
+ disabledMediaServerLoginWarning:
+ 'Some users may not have a {applicationTitle} password set. Disabling {mediaServerName} sign-in could lock them out. Affected users will need to set a password from their profile or via a password reset link.',
});
const SettingsUsers = () => {
@@ -200,6 +203,21 @@ const SettingsUsers = () => {
)
}
/>
+ {!values.mediaServerLogin && values.localLogin && (
+
+
+
+ )}
diff --git a/src/components/UserList/JellyfinImportModal.tsx b/src/components/UserList/JellyfinImportModal.tsx
index 39a963d484..4b303de2a3 100644
--- a/src/components/UserList/JellyfinImportModal.tsx
+++ b/src/components/UserList/JellyfinImportModal.tsx
@@ -24,6 +24,8 @@ const messages = defineMessages('components.UserList', {
'Something went wrong while importing {mediaServerName} users.',
importedfromJellyfin:
'{userCount} {mediaServerName} {userCount, plural, one {user} other {users}} imported successfully!',
+ importedUsersNoPassword:
+ 'Imported users do not have a {applicationTitle} password set. If you disable {mediaServerName} sign-in, they will need to set a password from their profile or via a password reset link.',
user: 'User',
noJellyfinuserstoimport: 'There are no {mediaServerName} users to import.',
newJellyfinsigninenabled:
@@ -84,6 +86,20 @@ const JellyfinImportModal: React.FC = ({
}
);
+ addToast(
+ intl.formatMessage(messages.importedUsersNoPassword, {
+ applicationTitle: settings.currentSettings.applicationTitle,
+ mediaServerName:
+ settings.currentSettings.mediaServerType === MediaServerType.EMBY
+ ? 'Emby'
+ : 'Jellyfin',
+ }),
+ {
+ autoDismiss: false,
+ appearance: 'warning',
+ }
+ );
+
if (onComplete) {
onComplete();
}
diff --git a/src/components/UserList/PlexImportModal.tsx b/src/components/UserList/PlexImportModal.tsx
index f93b698cef..c744219cb0 100644
--- a/src/components/UserList/PlexImportModal.tsx
+++ b/src/components/UserList/PlexImportModal.tsx
@@ -20,6 +20,8 @@ const messages = defineMessages('components.UserList', {
importfromplexerror: 'Something went wrong while importing Plex users.',
importedfromplex:
'{userCount} Plex {userCount, plural, one {user} other {users}} imported successfully!',
+ importedPlexUsersNoPassword:
+ 'Imported users do not have a {applicationTitle} password set. If you disable Plex sign-in, they will need to set a password from their profile or via a password reset link.',
user: 'User',
nouserstoimport: 'There are no Plex users to import.',
newplexsigninenabled:
@@ -68,6 +70,16 @@ const PlexImportModal = ({ onCancel, onComplete }: PlexImportProps) => {
}
);
+ addToast(
+ intl.formatMessage(messages.importedPlexUsersNoPassword, {
+ applicationTitle: settings.currentSettings.applicationTitle,
+ }),
+ {
+ autoDismiss: false,
+ appearance: 'warning',
+ }
+ );
+
if (onComplete) {
onComplete();
}
diff --git a/src/components/UserProfile/UserSettings/UserPasswordChange/index.tsx b/src/components/UserProfile/UserSettings/UserPasswordChange/index.tsx
index d5d6ea6266..869a1e2091 100644
--- a/src/components/UserProfile/UserSettings/UserPasswordChange/index.tsx
+++ b/src/components/UserProfile/UserSettings/UserPasswordChange/index.tsx
@@ -3,6 +3,7 @@ import Button from '@app/components/Common/Button';
import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import PageTitle from '@app/components/Common/PageTitle';
import SensitiveInput from '@app/components/Common/SensitiveInput';
+import useSettings from '@app/hooks/useSettings';
import { Permission, useUser } from '@app/hooks/useUser';
import globalMessages from '@app/i18n/globalMessages';
import ErrorPage from '@app/pages/_error';
@@ -19,6 +20,8 @@ import * as Yup from 'yup';
const messages = defineMessages(
'components.UserProfile.UserSettings.UserPasswordChange',
{
+ localPasswordDescription:
+ 'This password is used for signing in with the {applicationTitle} local login form. It is separate from your media server password.',
password: 'Password',
currentpassword: 'Current Password',
newpassword: 'New Password',
@@ -44,6 +47,7 @@ const messages = defineMessages(
const UserPasswordChange = () => {
const intl = useIntl();
+ const settings = useSettings();
const { addToast } = useToasts();
const router = useRouter();
const { user: currentUser } = useUser();
@@ -112,6 +116,11 @@ const UserPasswordChange = () => {
/>
{userCount} {mediaServerName} {userCount, plural, one {user} other {users}} imported successfully!",
"components.UserList.importedfromplex": "{userCount} Plex {userCount, plural, one {user} other {users}} imported successfully!",
"components.UserList.importfromJellyfin": "Import {mediaServerName} Users",
@@ -1531,6 +1538,7 @@
"components.UserProfile.UserSettings.UserNotificationSettings.webpush": "Web Push",
"components.UserProfile.UserSettings.UserPasswordChange.confirmpassword": "Confirm Password",
"components.UserProfile.UserSettings.UserPasswordChange.currentpassword": "Current Password",
+ "components.UserProfile.UserSettings.UserPasswordChange.localPasswordDescription": "This password is used for signing in with the {applicationTitle} local login form. It is separate from your media server password.",
"components.UserProfile.UserSettings.UserPasswordChange.newpassword": "New Password",
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "This user account currently does not have a password set. Configure a password below to enable this account to sign in as a \"local user.\"",
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Your account currently does not have a password set. Configure a password below to enable sign-in as a \"local user\" using your email address.",