Skip to content

Commit

Permalink
fix(auth): resolve local/password authentication issues (#2677)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
TheCatLady authored Apr 5, 2022
1 parent 341e3b8 commit b75fc7b
Showing 1 changed file with 35 additions and 22 deletions.
57 changes: 35 additions & 22 deletions server/routes/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -210,30 +210,43 @@ authRoutes.post('/local', async (req, res, next) => {
const mainPlexTv = new PlexTvAPI(mainUser.plexToken ?? '');

if (!user.plexId) {
const plexUsersResponse = await mainPlexTv.getUsers();
const account = plexUsersResponse.MediaContainer.User.find(
(account) =>
account.$.email &&
account.$.email.toLowerCase() === user.email.toLowerCase()
)?.$;

if (account) {
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,
});
try {
const plexUsersResponse = await mainPlexTv.getUsers();
const account = plexUsersResponse.MediaContainer.User.find(
(account) =>
account.$.email &&
account.$.email.toLowerCase() === user.email.toLowerCase()
)?.$;

if (
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;
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);
await userRepository.save(user);
}
} catch (e) {
logger.error('Something went wrong fetching Plex users', {
label: 'API',
errorMessage: e.message,
});
}
}

Expand Down

0 comments on commit b75fc7b

Please sign in to comment.