feat(plex): refresh token schedule (#3875)
* feat: refresh token schedule fix #3861 * fix(i18n): add i18n message * refactor(plextv): use randomUUID crypto instead custom functionpull/3924/head
parent
676a8c9764
commit
6d82eee656
@ -0,0 +1,37 @@
|
|||||||
|
import PlexTvAPI from '@server/api/plextv';
|
||||||
|
import { getRepository } from '@server/datasource';
|
||||||
|
import { User } from '@server/entity/User';
|
||||||
|
import logger from '@server/logger';
|
||||||
|
|
||||||
|
class RefreshToken {
|
||||||
|
public async run() {
|
||||||
|
const userRepository = getRepository(User);
|
||||||
|
|
||||||
|
const users = await userRepository
|
||||||
|
.createQueryBuilder('user')
|
||||||
|
.addSelect('user.plexToken')
|
||||||
|
.where("user.plexToken != ''")
|
||||||
|
.getMany();
|
||||||
|
|
||||||
|
for (const user of users) {
|
||||||
|
await this.refreshUserToken(user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async refreshUserToken(user: User) {
|
||||||
|
if (!user.plexToken) {
|
||||||
|
logger.warn('Skipping user refresh token for user without plex token', {
|
||||||
|
label: 'Plex Refresh Token',
|
||||||
|
user: user.displayName,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const plexTvApi = new PlexTvAPI(user.plexToken);
|
||||||
|
plexTvApi.pingToken();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const refreshToken = new RefreshToken();
|
||||||
|
|
||||||
|
export default refreshToken;
|
Loading…
Reference in new issue