diff --git a/modules/core/client/config/core.client.route-filter.js b/modules/core/client/config/core.client.route-filter.js index afb4c0cb..ec4e3aa8 100644 --- a/modules/core/client/config/core.client.route-filter.js +++ b/modules/core/client/config/core.client.route-filter.js @@ -5,9 +5,9 @@ .module('core') .run(routeFilter); - routeFilter.$inject = ['$rootScope', '$state', 'Authentication', 'MeanTorrentConfig']; + routeFilter.$inject = ['$rootScope', '$state', 'Authentication', 'MeanTorrentConfig', 'UsersService']; - function routeFilter($rootScope, $state, Authentication, MeanTorrentConfig) { + function routeFilter($rootScope, $state, Authentication, MeanTorrentConfig, UsersService) { $rootScope.$on('$stateChangeStart', stateChangeStart); $rootScope.$on('$stateChangeSuccess', stateChangeSuccess); @@ -41,11 +41,14 @@ } else { if (toState.name.startsWith('admin.')) { var adminAccessConfig = MeanTorrentConfig.meanTorrentConfig.adminAccess; + if (adminAccessConfig.limit) { - if (Authentication.user && !adminAccessConfig.limitedIp.includes(Authentication.user.curr_signed_ip)) { - event.preventDefault(); - $state.transitionTo('access-deny'); - } + UsersService.getMyIp(function (res) { + if (Authentication.user && !adminAccessConfig.limitedIp.includes(res.ip)) { + event.preventDefault(); + $state.transitionTo('access-deny'); + } + }); } } } diff --git a/modules/users/client/services/users.client.service.js b/modules/users/client/services/users.client.service.js index 8c1d9350..f1ab7df8 100644 --- a/modules/users/client/services/users.client.service.js +++ b/modules/users/client/services/users.client.service.js @@ -89,6 +89,10 @@ method: 'GET', url: '/api/users/:userId/following', isArray: true + }, + getMyIp: { + method: 'GET', + url: '/api/users/myIp' } }); diff --git a/modules/users/server/controllers/users/users.profile.server.controller.js b/modules/users/server/controllers/users/users.profile.server.controller.js index ed133361..84517afb 100644 --- a/modules/users/server/controllers/users/users.profile.server.controller.js +++ b/modules/users/server/controllers/users/users.profile.server.controller.js @@ -288,3 +288,14 @@ exports.unIdle = function (req, res, next) { }); } }; + +/** + * getMyIp + * @param req + * @param res + */ +exports.getMyIp = function (req, res) { + res.status(200).send({ + ip: req.user.curr_signed_ip + }); +}; diff --git a/modules/users/server/routes/users.server.routes.js b/modules/users/server/routes/users.server.routes.js index 302fe241..54a30f20 100644 --- a/modules/users/server/routes/users.server.routes.js +++ b/modules/users/server/routes/users.server.routes.js @@ -6,6 +6,7 @@ module.exports = function (app) { // Setting up the users profile api app.route('/api/users/me').get(users.me); + app.route('/api/users/myIp').get(users.getMyIp); app.route('/api/users').put(users.update); app.route('/api/users/accounts').delete(users.removeOAuthProvider); app.route('/api/users/password').post(users.changePassword);