@@ -19,6 +19,8 @@ var _ = require('underscore');
1919var moment = require ( 'moment' ) ;
2020var IllegalArgumentError = require ( '../errors/IllegalArgumentError' ) ;
2121var NotFoundError = require ( '../errors/NotFoundError' ) ;
22+ var UnauthorizedError = require ( '../errors/UnauthorizedError' ) ;
23+ var ForbiddenError = require ( '../errors/ForbiddenError' ) ;
2224
2325var DATE_FORMAT = "YYYY-MM-DD HH:mm" ;
2426
@@ -277,6 +279,28 @@ var setRoundSurvey = function (api, connection, dbConnectionMap, next) {
277279 } ) ;
278280} ;
279281
282+ /**
283+ * Check if user authorized and is admin or web Arena super user
284+ *
285+ * @param api the api instance.
286+ * @param the connection instance
287+ * @param callback the callback method
288+ */
289+ function checkAuthorization ( api , connection , callback ) {
290+ var helper = api . helper ,
291+ caller = connection . caller ;
292+
293+ if ( ! helper . isAdmin ( caller ) && ! caller . isWebArenaSuper ) {
294+ if ( ! helper . isMember ( caller ) ) {
295+ callback ( new UnauthorizedError ( "Authorized information needed." ) ) ;
296+ } else {
297+ callback ( new ForbiddenError ( "Admin or web Arena super user only." ) ) ;
298+ }
299+ } else {
300+ callback ( ) ;
301+ }
302+ }
303+
280304/**
281305 * Check question id.
282306 *
@@ -515,7 +539,7 @@ var addRoundQuestion = function (api, connection, dbConnectionMap, next) {
515539
516540 async . waterfall ( [
517541 function ( cb ) {
518- cb ( helper . checkAdmin ( connection , 'Authorized information needed.' , 'Admin access only.' ) ) ;
542+ checkAuthorization ( api , connection , cb ) ;
519543 } , function ( cb ) {
520544 checkRoundId ( api , dbConnectionMap , roundId , cb ) ;
521545 } , function ( error , cb ) {
0 commit comments