mirror of
https://github.com/sct/overseerr.git
synced 2025-09-17 17:24:35 +02:00
fix(auth): resolve local/password authentication issues (#2677)
* fix(auth): only add Plex ID to user after verifying server access * fix(auth): do not fail local auth if fetching Plex users is unsuccessful
This commit is contained in:
@@ -210,30 +210,43 @@ authRoutes.post('/local', async (req, res, next) => {
|
|||||||
const mainPlexTv = new PlexTvAPI(mainUser.plexToken ?? '');
|
const mainPlexTv = new PlexTvAPI(mainUser.plexToken ?? '');
|
||||||
|
|
||||||
if (!user.plexId) {
|
if (!user.plexId) {
|
||||||
const plexUsersResponse = await mainPlexTv.getUsers();
|
try {
|
||||||
const account = plexUsersResponse.MediaContainer.User.find(
|
const plexUsersResponse = await mainPlexTv.getUsers();
|
||||||
(account) =>
|
const account = plexUsersResponse.MediaContainer.User.find(
|
||||||
account.$.email &&
|
(account) =>
|
||||||
account.$.email.toLowerCase() === user.email.toLowerCase()
|
account.$.email &&
|
||||||
)?.$;
|
account.$.email.toLowerCase() === user.email.toLowerCase()
|
||||||
|
)?.$;
|
||||||
|
|
||||||
if (account) {
|
if (
|
||||||
logger.info('Found matching Plex user; updating user with Plex data', {
|
account &&
|
||||||
|
(await mainPlexTv.checkUserAccess(parseInt(account.id)))
|
||||||
|
) {
|
||||||
|
logger.info(
|
||||||
|
'Found matching Plex user; updating user with Plex data',
|
||||||
|
{
|
||||||
|
label: 'API',
|
||||||
|
ip: req.ip,
|
||||||
|
email: body.email,
|
||||||
|
userId: user.id,
|
||||||
|
plexId: account.id,
|
||||||
|
plexUsername: account.username,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
user.plexId = parseInt(account.id);
|
||||||
|
user.avatar = account.thumb;
|
||||||
|
user.email = account.email;
|
||||||
|
user.plexUsername = account.username;
|
||||||
|
user.userType = UserType.PLEX;
|
||||||
|
|
||||||
|
await userRepository.save(user);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
logger.error('Something went wrong fetching Plex users', {
|
||||||
label: 'API',
|
label: 'API',
|
||||||
ip: req.ip,
|
errorMessage: e.message,
|
||||||
email: body.email,
|
|
||||||
userId: user.id,
|
|
||||||
plexId: account.id,
|
|
||||||
plexUsername: account.username,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
user.plexId = parseInt(account.id);
|
|
||||||
user.avatar = account.thumb;
|
|
||||||
user.email = account.email;
|
|
||||||
user.plexUsername = account.username;
|
|
||||||
user.userType = UserType.PLEX;
|
|
||||||
|
|
||||||
await userRepository.save(user);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user