mirror of
				https://github.com/ether/etherpad-lite.git
				synced 2025-10-31 00:01:16 +01:00 
			
		
		
		
	[feat] New server-side hook: onAccessCheck
This commit is contained in:
		
							parent
							
								
									f9203524a4
								
							
						
					
					
						commit
						35702a0589
					
				| @ -108,6 +108,18 @@ Usage examples: | |||||||
| 
 | 
 | ||||||
| * https://github.com/tiblu/ep_authorship_toggle | * https://github.com/tiblu/ep_authorship_toggle | ||||||
| 
 | 
 | ||||||
|  | ## onAccessCheck | ||||||
|  | Called from: src/node/db/SecurityManager.js | ||||||
|  | 
 | ||||||
|  | Things in context: | ||||||
|  | 
 | ||||||
|  | 1. padID - the pad the user wants to access | ||||||
|  | 2. password - the password the user has given to access the pad | ||||||
|  | 3. token - the token of the author | ||||||
|  | 3. sessionCookie - the session the use has | ||||||
|  | 
 | ||||||
|  | This hook gets called when the access to the concrete pad is being checked. Return `false` to deny access. | ||||||
|  | 
 | ||||||
| ## padCreate | ## padCreate | ||||||
| Called from: src/node/db/Pad.js | Called from: src/node/db/Pad.js | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -22,6 +22,7 @@ | |||||||
| var ERR = require("async-stacktrace"); | var ERR = require("async-stacktrace"); | ||||||
| var async = require("async"); | var async = require("async"); | ||||||
| var authorManager = require("./AuthorManager"); | var authorManager = require("./AuthorManager"); | ||||||
|  | var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks.js"); | ||||||
| var padManager = require("./PadManager"); | var padManager = require("./PadManager"); | ||||||
| var sessionManager = require("./SessionManager"); | var sessionManager = require("./SessionManager"); | ||||||
| var settings = require("../utils/Settings"); | var settings = require("../utils/Settings"); | ||||||
| @ -45,6 +46,14 @@ exports.checkAccess = function (padID, sessionCookie, token, password, callback) | |||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   // allow plugins to deny access
 | ||||||
|  |   var deniedByHook = hooks.callAll("onAccessCheck", {'padID': padID, 'password': password, 'token': token, 'sessionCookie': sessionCookie}).indexOf(false) > -1; | ||||||
|  |   if(deniedByHook) | ||||||
|  |   { | ||||||
|  |     callback(null, {accessStatus: "deny"}); | ||||||
|  |     return; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   // a valid session is required (api-only mode)
 |   // a valid session is required (api-only mode)
 | ||||||
|   if(settings.requireSession) |   if(settings.requireSession) | ||||||
|   { |   { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user