mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 18:36:30 +01:00 
			
		
		
		
	make clipper api authenticated for server and unauthenticated for local electron
This commit is contained in:
		| @@ -7,6 +7,7 @@ const imageService = require('../../services/image'); | |||||||
| const appInfo = require('../../services/app_info'); | const appInfo = require('../../services/app_info'); | ||||||
| const messagingService = require('../../services/messaging'); | const messagingService = require('../../services/messaging'); | ||||||
| const log = require('../../services/log'); | const log = require('../../services/log'); | ||||||
|  | const utils = require('../../services/utils'); | ||||||
| const path = require('path'); | const path = require('path'); | ||||||
| const Link = require('../../entities/link'); | const Link = require('../../entities/link'); | ||||||
|  |  | ||||||
| @@ -144,12 +145,21 @@ async function createImage(req) { | |||||||
| } | } | ||||||
|  |  | ||||||
| async function openNote(req) { | async function openNote(req) { | ||||||
|     messagingService.sendMessageToAllClients({ |     if (utils.isElectron()) { | ||||||
|         type: 'open-note', |         messagingService.sendMessageToAllClients({ | ||||||
|         noteId: req.params.noteId |             type: 'open-note', | ||||||
|     }); |             noteId: req.params.noteId | ||||||
|  |         }); | ||||||
|  |  | ||||||
|     return {}; |         return { | ||||||
|  |             result: 'ok' | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |         return { | ||||||
|  |             result: 'open-in-browser' | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| async function handshake() { | async function handshake() { | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| const setupRoute = require('./setup'); | const setupRoute = require('./setup'); | ||||||
| const loginRoute = require('./login'); | const loginRoute = require('./login'); | ||||||
| const indexRoute = require('./index'); | const indexRoute = require('./index'); | ||||||
|  | const utils = require('../services/utils'); | ||||||
| const multer = require('multer')(); | const multer = require('multer')(); | ||||||
|  |  | ||||||
| // API routes | // API routes | ||||||
| @@ -214,8 +215,8 @@ function register(app) { | |||||||
|  |  | ||||||
|     // no CSRF since this is called from android app |     // no CSRF since this is called from android app | ||||||
|     route(POST, '/api/sender/login', [], loginApiRoute.token, apiResultHandler); |     route(POST, '/api/sender/login', [], loginApiRoute.token, apiResultHandler); | ||||||
|     route(POST, '/api/sender/image', [auth.checkSenderToken, uploadMiddleware], senderRoute.uploadImage, apiResultHandler); |     route(POST, '/api/sender/image', [auth.checkToken, uploadMiddleware], senderRoute.uploadImage, apiResultHandler); | ||||||
|     route(POST, '/api/sender/note', [auth.checkSenderToken], senderRoute.saveNote, apiResultHandler); |     route(POST, '/api/sender/note', [auth.checkToken], senderRoute.saveNote, apiResultHandler); | ||||||
|  |  | ||||||
|     apiRoute(GET, '/api/search/:searchString', searchRoute.searchNotes); |     apiRoute(GET, '/api/search/:searchString', searchRoute.searchNotes); | ||||||
|     apiRoute(GET, '/api/search-note/:noteId', searchRoute.searchFromNote); |     apiRoute(GET, '/api/search-note/:noteId', searchRoute.searchFromNote); | ||||||
| @@ -225,11 +226,14 @@ function register(app) { | |||||||
|     apiRoute(POST, '/api/login/protected', loginApiRoute.loginToProtectedSession); |     apiRoute(POST, '/api/login/protected', loginApiRoute.loginToProtectedSession); | ||||||
|     route(POST, '/api/login/token', [], loginApiRoute.token, apiResultHandler); |     route(POST, '/api/login/token', [], loginApiRoute.token, apiResultHandler); | ||||||
|  |  | ||||||
|     route(GET, '/api/clipper/handshake', [], clipperRoute.handshake, apiResultHandler); |     // in case of local electron, local calls are allowed unauthenticated, for server they need auth | ||||||
|     route(POST, '/api/clipper/clippings', [], clipperRoute.addClipping, apiResultHandler); |     const clipperMiddleware = utils.isElectron() ? [] : [auth.checkToken]; | ||||||
|     route(POST, '/api/clipper/notes', [], clipperRoute.createNote, apiResultHandler); |  | ||||||
|     route(POST, '/api/clipper/image', [], clipperRoute.createImage, apiResultHandler); |     route(GET, '/api/clipper/handshake', clipperMiddleware, clipperRoute.handshake, apiResultHandler); | ||||||
|     route(POST, '/api/clipper/open/:noteId', [], clipperRoute.openNote, apiResultHandler); |     route(POST, '/api/clipper/clippings', clipperMiddleware, clipperRoute.addClipping, apiResultHandler); | ||||||
|  |     route(POST, '/api/clipper/notes', clipperMiddleware, clipperRoute.createNote, apiResultHandler); | ||||||
|  |     route(POST, '/api/clipper/image', clipperMiddleware, clipperRoute.createImage, apiResultHandler); | ||||||
|  |     route(POST, '/api/clipper/open/:noteId', clipperMiddleware, clipperRoute.openNote, apiResultHandler); | ||||||
|  |  | ||||||
|     app.use('', router); |     app.use('', router); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -56,7 +56,7 @@ async function checkAppNotInitialized(req, res, next) { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| async function checkSenderToken(req, res, next) { | async function checkToken(req, res, next) { | ||||||
|     const token = req.headers.authorization; |     const token = req.headers.authorization; | ||||||
|  |  | ||||||
|     if (await sql.getValue("SELECT COUNT(*) FROM api_tokens WHERE isDeleted = 0 AND token = ?", [token]) === 0) { |     if (await sql.getValue("SELECT COUNT(*) FROM api_tokens WHERE isDeleted = 0 AND token = ?", [token]) === 0) { | ||||||
| @@ -89,6 +89,6 @@ module.exports = { | |||||||
|     checkAppInitialized, |     checkAppInitialized, | ||||||
|     checkAppNotInitialized, |     checkAppNotInitialized, | ||||||
|     checkApiAuthOrElectron, |     checkApiAuthOrElectron, | ||||||
|     checkSenderToken, |     checkToken, | ||||||
|     checkBasicAuth |     checkBasicAuth | ||||||
| }; | }; | ||||||
		Reference in New Issue
	
	Block a user