diff options
author | Lauri Ojansivu <x@xet7.org> | 2017-03-05 19:59:19 +0200 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2017-03-05 19:59:19 +0200 |
commit | cbc3c8224fbed643780c5be20221269b62e50ac6 (patch) | |
tree | 5715424ab1454463a3f8ca458729347bbc014f5b /models/users.js | |
parent | 7b68f1901e8bd81ec8fbebb60a3f4e057b57d06d (diff) | |
parent | 7c9a30d8fe3ffdf4b56cdc816bfc51f60881d55f (diff) | |
download | wekan-cbc3c8224fbed643780c5be20221269b62e50ac6.tar.gz wekan-cbc3c8224fbed643780c5be20221269b62e50ac6.tar.bz2 wekan-cbc3c8224fbed643780c5be20221269b62e50ac6.zip |
Merge branch 'lkisme-devel' into devel
Add Admin Panel:
1) Disable Self-Registration and invite users
2) SMTP settings.
Adding Admin user in mongo cli:
1) Use database that has wekan data, for example:
use admin;
2) Add Admin rights to some Wekan username:
db.users.update({username:'admin-username-here'},{$set:{isAdmin:true}})
Hiding Admin panel by removing Admin rights:
use admin;
db.settings.remove({});
Diffstat (limited to 'models/users.js')
-rw-r--r-- | models/users.js | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/models/users.js b/models/users.js index da2d02ee..06b84fa0 100644 --- a/models/users.js +++ b/models/users.js @@ -348,7 +348,7 @@ if (Meteor.isServer) { if (user._id === inviter._id) throw new Meteor.Error('error-user-notAllowSelf'); } else { if (posAt <= 0) throw new Meteor.Error('error-user-doesNotExist'); - + if (Settings.findOne().disableRegistration) throw new Meteor.Error('error-user-notCreated'); // Set in lowercase email before creating account const email = username.toLowerCase(); username = email.substring(0, posAt); @@ -390,6 +390,28 @@ if (Meteor.isServer) { return { username: user.username, email: user.emails[0].address }; }, }); + Accounts.onCreateUser((options, user) => { + const userCount = Users.find().count(); + if (userCount === 0){ + user.isAdmin = true; + return user; + } + const disableRegistration = Settings.findOne().disableRegistration; + if (!disableRegistration) { + return user; + } + + const iCode = options.profile.invitationcode | ''; + + const invitationCode = InvitationCodes.findOne({code: iCode, valid:true}); + if (!invitationCode) { + throw new Meteor.Error('error-invitation-code-not-exist'); + }else{ + user.profile = {icode: options.profile.invitationcode}; + } + + return user; + }); } if (Meteor.isServer) { @@ -459,4 +481,25 @@ if (Meteor.isServer) { }); }); } + + Users.after.insert((userId, doc) => { + + //invite user to corresponding boards + const disableRegistration = Settings.findOne().disableRegistration; + if (disableRegistration) { + const user = Users.findOne(doc._id); + const invitationCode = InvitationCodes.findOne({code: user.profile.icode, valid:true}); + if (!invitationCode) { + throw new Meteor.Error('error-user-notCreated'); + }else{ + invitationCode.boardsToBeInvited.forEach((boardId) => { + const board = Boards.findOne(boardId); + board.addMember(doc._id); + }); + user.profile = {invitedBoards: invitationCode.boardsToBeInvited}; + InvitationCodes.update(invitationCode._id, {$set: {valid:false}}); + } + } + }); } + |