diff options
| author | rr- <rr-@sakuya.pl> | 2016-04-01 18:45:25 +0200 |
|---|---|---|
| committer | rr- <rr-@sakuya.pl> | 2016-04-01 18:48:16 +0200 |
| commit | e487adcc97b8d2bd111a34b7d3c72d66001deb8b (patch) | |
| tree | d684abf99bf176ead0a785bc237ae3b6a81417c1 /client/js/controllers/users_controller.js | |
| parent | 1ad71585c4e95555566e8af068d5addf75b33274 (diff) | |
split files into client/ and server/
Diffstat (limited to 'client/js/controllers/users_controller.js')
| -rw-r--r-- | client/js/controllers/users_controller.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/client/js/controllers/users_controller.js b/client/js/controllers/users_controller.js new file mode 100644 index 0000000..5bd78f8 --- /dev/null +++ b/client/js/controllers/users_controller.js @@ -0,0 +1,61 @@ +'use strict'; + +const cookies = require('js-cookie'); +const page = require('page'); +const api = require('../api.js'); +const topNavController = require('../controllers/top_nav_controller.js'); +const RegistrationView = require('../views/registration_view.js'); + +class UsersController { + constructor() { + this.registrationView = new RegistrationView(); + } + + listUsersRoute() { + topNavController.activate('users'); + } + + createUserRoute() { + topNavController.activate('register'); + this.registrationView.render({register: (...args) => { + return this._register(...args); + }}); + } + + _register(name, password, email) { + const data = { + 'name': name, + 'password': password, + 'email': email + }; + // TODO: reduce callback hell + return new Promise((resolve, reject) => { + api.post('/users/', data).then(() => { + api.login(name, password).then(() => { + cookies.set('auth', {'user': name, 'password': password}); + resolve(); + page('/'); + this.registrationView.notifySuccess('Welcome aboard!'); + }).catch(response => { + reject(response.description); + }); + }).catch(response => { + reject(response.description); + }); + }); + } + + showUserRoute(user) { + if (api.isLoggedIn() && user == api.userName) { + topNavController.activate('account'); + } else { + topNavController.activate('users'); + } + } + + editUserRoute(user) { + topNavController.activate('users'); + } +} + +module.exports = new UsersController(); |