41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
|
'use strict'
|
||
|
/** @typedef {import('@adonisjs/framework/src/Request')} Request */
|
||
|
/** @typedef {import('@adonisjs/framework/src/Response')} Response */
|
||
|
/** @typedef {import('@adonisjs/framework/src/View')} View */
|
||
|
const Book = use('App/Models/Book');
|
||
|
const UserChildUtils = use('App/Utils/UserChildUtils');
|
||
|
class BookPageAuth {
|
||
|
/**
|
||
|
* @param {object} ctx
|
||
|
* @param {Request} ctx.request
|
||
|
* @param {Function} next
|
||
|
*/
|
||
|
async handle(ctx, next) {
|
||
|
const {request, auth, response} = ctx;
|
||
|
// call next to advance the request
|
||
|
const user = auth.user;
|
||
|
const bookId = request.params.bookId;
|
||
|
const book = await Book.find(bookId);
|
||
|
if (!book) {
|
||
|
response.status(404);
|
||
|
response.send({code: 404, message: 'Book not found'});
|
||
|
return;
|
||
|
}
|
||
|
ctx.book = book;
|
||
|
if (book.user_id) {
|
||
|
// Belongs to a user. Check if the book user has a connection with this
|
||
|
// user
|
||
|
if (book.user_id === user.id)
|
||
|
await next();
|
||
|
else {
|
||
|
const ownerConnections =
|
||
|
await UserChildUtils.getUserConnections(book.user_id);
|
||
|
console.log(ownerConnections);
|
||
|
}
|
||
|
}
|
||
|
await next();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = BookPageAuth
|