From 3bd8cf69a1c6af8805eb6d237698cc4a2862ab67 Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Mon, 23 Dec 2013 13:27:26 -0500 Subject: [PATCH] admins can create users from admin/users panel --- public/src/forum/admin/users.js | 35 ++++++++++++++++++++++++++ public/src/forum/register.js | 3 ++- public/templates/admin/users.tpl | 43 ++++++++++++++++++++++++++++++++ src/admin/user.js | 15 +++++++++++ src/websockets.js | 5 ++-- 5 files changed, 98 insertions(+), 3 deletions(-) diff --git a/public/src/forum/admin/users.js b/public/src/forum/admin/users.js index 44504f021c..32a0649146 100644 --- a/public/src/forum/admin/users.js +++ b/public/src/forum/admin/users.js @@ -64,6 +64,39 @@ define(function() { }); } + function handleUserCreate() { + $('#createUser').on('click', function() { + $('#create-modal').modal('show'); + }); + + $('#create-modal-go').on('click', function() { + var username = $('#create-user-name').val(), + email = $('#create-user-email').val(), + password = $('#create-user-password').val(), + passwordAgain = $('#create-user-password-again').val(), + errorEl = $('#create-modal-error'); + + if(password !== passwordAgain) { + return errorEl.html('Error

Passwords must match!

').removeClass('hide'); + } + + var user = { + username: username, + email: email, + password: password + }; + + socket.emit('api:admin.user.createUser', user, function(err, data) { + if(err) { + return errorEl.html('Error

' + err + '

').removeClass('hide'); + } + $('#create-modal').modal('hide'); + app.alert(); + }); + + }); + } + jQuery('document').ready(function() { @@ -99,6 +132,8 @@ define(function() { initUsers(); + handleUserCreate(); + socket.removeAllListeners('api:admin.user.search'); socket.on('api:admin.user.search', function(data) { diff --git a/public/src/forum/register.js b/public/src/forum/register.js index d4b1781134..65c698c263 100644 --- a/public/src/forum/register.js +++ b/public/src/forum/register.js @@ -41,10 +41,11 @@ define(function() { if (!utils.isEmailValid(emailEl.val())) { showError(email_notify, 'Invalid email address.'); - } else + } else { socket.emit('user.email.exists', { email: emailEl.val() }); + } } emailEl.on('blur', function() { diff --git a/public/templates/admin/users.tpl b/public/templates/admin/users.tpl index e0909de9be..b2507828d3 100644 --- a/public/templates/admin/users.tpl +++ b/public/templates/admin/users.tpl @@ -1,4 +1,6 @@

Users

+ +
+ + + +
diff --git a/src/admin/user.js b/src/admin/user.js index 0f37d8590e..8e754ab1a4 100644 --- a/src/admin/user.js +++ b/src/admin/user.js @@ -4,6 +4,21 @@ var utils = require('../../public/src/utils'), (function(UserAdmin) { + UserAdmin.createUser = function(uid, userData, callback) { + user.isAdministrator(uid, function(err, isAdmin) { + if (isAdmin) { + user.create(userData.username, userData.password, userData.email, function(err) { + if(err) { + return callback(err.message); + } + callback(null); + }); + } else { + callback(new Error('You are not an administrator')); + } + }); + } + UserAdmin.makeAdmin = function(uid, theirid, socket) { user.isAdministrator(uid, function(err, isAdmin) { if (isAdmin) { diff --git a/src/websockets.js b/src/websockets.js index 307abf80ec..6fb17b1f92 100644 --- a/src/websockets.js +++ b/src/websockets.js @@ -960,9 +960,10 @@ websockets.init = function(io) { } }); - socket.on('api:admin.user.deleteUser', function(theirid) { + socket.on('api:admin.user.createUser', function(user, callback) { + console.log('heeerp'); if (uid && uid > 0) { - admin.user.deleteUser(uid, theirid, socket); + admin.user.createUser(uid, user, callback); } });