summaryrefslogtreecommitdiff
path: root/client/js/controllers/users_controller.js
diff options
context:
space:
mode:
authorrr- <rr-@sakuya.pl>2016-04-01 18:45:25 +0200
committerrr- <rr-@sakuya.pl>2016-04-01 18:48:16 +0200
commite487adcc97b8d2bd111a34b7d3c72d66001deb8b (patch)
treed684abf99bf176ead0a785bc237ae3b6a81417c1 /client/js/controllers/users_controller.js
parent1ad71585c4e95555566e8af068d5addf75b33274 (diff)
split files into client/ and server/
Diffstat (limited to 'client/js/controllers/users_controller.js')
-rw-r--r--client/js/controllers/users_controller.js61
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();