mirror of
https://github.com/fallenbagel/jellyseerr.git
synced 2026-01-01 04:08:45 -05:00
fix(usersettings): allow unset email and add more explicit email error message (#1096)
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import { ApiErrorCode } from '@server/constants/error';
|
import { ApiErrorCode } from '@server/constants/error';
|
||||||
|
import { UserType } from '@server/constants/user';
|
||||||
import { getRepository } from '@server/datasource';
|
import { getRepository } from '@server/datasource';
|
||||||
import { User } from '@server/entity/User';
|
import { User } from '@server/entity/User';
|
||||||
import { UserSettings } from '@server/entity/UserSettings';
|
import { UserSettings } from '@server/entity/UserSettings';
|
||||||
@@ -99,11 +100,29 @@ userSettingsRoutes.post<
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
user.username = req.body.username;
|
|
||||||
const oldEmail = user.email;
|
const oldEmail = user.email;
|
||||||
|
const oldUsername = user.username;
|
||||||
|
user.username = req.body.username;
|
||||||
if (user.jellyfinUsername) {
|
if (user.jellyfinUsername) {
|
||||||
user.email = req.body.email || user.jellyfinUsername || user.email;
|
user.email = req.body.email || user.jellyfinUsername || user.email;
|
||||||
}
|
}
|
||||||
|
// Edge case for local users, because they have no Jellyfin username to fall back on
|
||||||
|
// if the email is not provided
|
||||||
|
if (user.userType === UserType.LOCAL) {
|
||||||
|
if (req.body.email) {
|
||||||
|
user.email = req.body.email;
|
||||||
|
if (
|
||||||
|
!user.username &&
|
||||||
|
user.email !== oldEmail &&
|
||||||
|
!oldEmail.includes('@')
|
||||||
|
) {
|
||||||
|
user.username = oldEmail;
|
||||||
|
}
|
||||||
|
} else if (req.body.username) {
|
||||||
|
user.email = oldUsername || user.email;
|
||||||
|
user.username = req.body.username;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const existingUser = await userRepository.findOne({
|
const existingUser = await userRepository.findOne({
|
||||||
where: { email: user.email },
|
where: { email: user.email },
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ const messages = defineMessages(
|
|||||||
toastSettingsSuccess: 'Settings saved successfully!',
|
toastSettingsSuccess: 'Settings saved successfully!',
|
||||||
toastSettingsFailure: 'Something went wrong while saving settings.',
|
toastSettingsFailure: 'Something went wrong while saving settings.',
|
||||||
toastSettingsFailureEmail: 'This email is already taken!',
|
toastSettingsFailureEmail: 'This email is already taken!',
|
||||||
|
toastSettingsFailureEmailEmpty:
|
||||||
|
'Another user already has this username. You must set an email',
|
||||||
region: 'Discover Region',
|
region: 'Discover Region',
|
||||||
regionTip: 'Filter content by regional availability',
|
regionTip: 'Filter content by regional availability',
|
||||||
originallanguage: 'Discover Language',
|
originallanguage: 'Discover Language',
|
||||||
@@ -138,7 +140,7 @@ const UserGeneralSettings = () => {
|
|||||||
</div>
|
</div>
|
||||||
<Formik
|
<Formik
|
||||||
initialValues={{
|
initialValues={{
|
||||||
displayName: data?.username ?? '',
|
displayName: data?.username !== user?.email ? data?.username : '',
|
||||||
email: data?.email?.includes('@') ? data.email : '',
|
email: data?.email?.includes('@') ? data.email : '',
|
||||||
discordId: data?.discordId ?? '',
|
discordId: data?.discordId ?? '',
|
||||||
locale: data?.locale,
|
locale: data?.locale,
|
||||||
@@ -203,10 +205,23 @@ const UserGeneralSettings = () => {
|
|||||||
/* empty */
|
/* empty */
|
||||||
}
|
}
|
||||||
if (errorData?.message === ApiErrorCode.InvalidEmail) {
|
if (errorData?.message === ApiErrorCode.InvalidEmail) {
|
||||||
addToast(intl.formatMessage(messages.toastSettingsFailureEmail), {
|
if (values.email) {
|
||||||
autoDismiss: true,
|
addToast(
|
||||||
appearance: 'error',
|
intl.formatMessage(messages.toastSettingsFailureEmail),
|
||||||
});
|
{
|
||||||
|
autoDismiss: true,
|
||||||
|
appearance: 'error',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
addToast(
|
||||||
|
intl.formatMessage(messages.toastSettingsFailureEmailEmpty),
|
||||||
|
{
|
||||||
|
autoDismiss: true,
|
||||||
|
appearance: 'error',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
addToast(intl.formatMessage(messages.toastSettingsFailure), {
|
addToast(intl.formatMessage(messages.toastSettingsFailure), {
|
||||||
autoDismiss: true,
|
autoDismiss: true,
|
||||||
@@ -284,9 +299,9 @@ const UserGeneralSettings = () => {
|
|||||||
name="displayName"
|
name="displayName"
|
||||||
type="text"
|
type="text"
|
||||||
placeholder={
|
placeholder={
|
||||||
user?.username ||
|
|
||||||
user?.jellyfinUsername ||
|
user?.jellyfinUsername ||
|
||||||
user?.plexUsername
|
user?.plexUsername ||
|
||||||
|
user?.email
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1248,6 +1248,7 @@
|
|||||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Series Request Limit",
|
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Series Request Limit",
|
||||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "Something went wrong while saving settings.",
|
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "Something went wrong while saving settings.",
|
||||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "This email is already taken!",
|
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "This email is already taken!",
|
||||||
|
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmailEmpty": "Another user already has this username. You must set an email",
|
||||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Settings saved successfully!",
|
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Settings saved successfully!",
|
||||||
"components.UserProfile.UserSettings.UserGeneralSettings.user": "User",
|
"components.UserProfile.UserSettings.UserGeneralSettings.user": "User",
|
||||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "You must provide a valid Discord user ID",
|
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "You must provide a valid Discord user ID",
|
||||||
|
|||||||
Reference in New Issue
Block a user