Plugin user.getAuthUser is now async
So we can load the full user
This commit is contained in:
parent
7a22a0a56a
commit
b31d72625d
6 changed files with 19 additions and 7 deletions
|
@ -17,6 +17,7 @@ import { VideoBlacklistCreate } from '@shared/models'
|
|||
import { addAccountInBlocklist, addServerInBlocklist, removeAccountFromBlocklist, removeServerFromBlocklist } from '../blocklist'
|
||||
import { getServerConfig } from '../config'
|
||||
import { blacklistVideo, unblacklistVideo } from '../video-blacklist'
|
||||
import { UserModel } from '@server/models/account/user'
|
||||
|
||||
function buildPluginHelpers (pluginModel: MPlugin, npmName: string): PeerTubeHelpers {
|
||||
const logger = buildPluginLogger(npmName)
|
||||
|
@ -163,6 +164,11 @@ function buildPluginRelatedHelpers (plugin: MPlugin, npmName: string) {
|
|||
|
||||
function buildUserHelpers () {
|
||||
return {
|
||||
getAuthUser: (res: express.Response) => res.locals.oauth?.token?.User
|
||||
getAuthUser: (res: express.Response) => {
|
||||
const user = res.locals.oauth?.token?.User
|
||||
if (!user) return undefined
|
||||
|
||||
return UserModel.loadByIdFull(user.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -565,6 +565,10 @@ export class UserModel extends Model {
|
|||
return UserModel.unscoped().findByPk(id)
|
||||
}
|
||||
|
||||
static loadByIdFull (id: number): Promise<MUserDefault> {
|
||||
return UserModel.findByPk(id)
|
||||
}
|
||||
|
||||
static loadByIdWithChannels (id: number, withStats = false): Promise<MUserDefault> {
|
||||
const scopes = [
|
||||
ScopeNames.WITH_VIDEOCHANNELS
|
||||
|
|
|
@ -88,8 +88,8 @@ async function register ({
|
|||
return res.json({ routerRoute })
|
||||
})
|
||||
|
||||
router.get('/user', (req, res) => {
|
||||
const user = peertubeHelpers.user.getAuthUser(res)
|
||||
router.get('/user', async (req, res) => {
|
||||
const user = await peertubeHelpers.user.getAuthUser(res)
|
||||
if (!user) return res.sendStatus(404)
|
||||
|
||||
const isAdmin = user.role === 0
|
||||
|
@ -98,6 +98,7 @@ async function register ({
|
|||
|
||||
return res.json({
|
||||
username: user.username,
|
||||
displayName: user.Account.name,
|
||||
isAdmin,
|
||||
isModerator,
|
||||
isUser
|
||||
|
|
|
@ -133,6 +133,7 @@ describe('Test plugin helpers', function () {
|
|||
})
|
||||
|
||||
expect(res.body.username).to.equal('root')
|
||||
expect(res.body.displayName).to.equal('root')
|
||||
expect(res.body.isAdmin).to.be.true
|
||||
expect(res.body.isModerator).to.be.false
|
||||
expect(res.body.isUser).to.be.false
|
||||
|
|
|
@ -70,13 +70,13 @@ export type PeerTubeHelpers = {
|
|||
|
||||
user: {
|
||||
// PeerTube >= 3.2
|
||||
getAuthUser: (response: Response) => {
|
||||
getAuthUser: (response: Response) => Promise<{
|
||||
id?: string
|
||||
username: string
|
||||
email: string
|
||||
blocked: boolean
|
||||
role: UserRole
|
||||
} | undefined
|
||||
} | undefined>
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -261,8 +261,8 @@ function register ({
|
|||
router.get('/ping', (req, res) => res.json({ message: 'pong' }))
|
||||
|
||||
// Users are automatically authenticated
|
||||
router.get('/auth', (res, res) => {
|
||||
const user = peertubeHelpers.user.getAuthUser(res)
|
||||
router.get('/auth', async (res, res) => {
|
||||
const user = await peertubeHelpers.user.getAuthUser(res)
|
||||
|
||||
const isAdmin = user.role === 0
|
||||
const isModerator = user.role === 1
|
||||
|
|
Loading…
Reference in a new issue