Skip to content

Commit

Permalink
Merge branch 'master' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
polonel committed Mar 20, 2019
2 parents 8251d58 + 4d3de52 commit fb0face
Show file tree
Hide file tree
Showing 6 changed files with 106 additions and 79 deletions.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
## [1.0.9](https://github.com/polonel/trudesk/compare/v1.0.8...v1.0.9) (2019-03-20)


### Bug Fixes

* **accounts:** import failing due to role changes ([893af61](https://github.com/polonel/trudesk/commit/893af61))
* **mailcheck:** [#170](https://github.com/polonel/trudesk/issues/170) ([10c36fa](https://github.com/polonel/trudesk/commit/10c36fa))
* **tps:** missing host name in some cases ([c3704b5](https://github.com/polonel/trudesk/commit/c3704b5))

## [1.0.8](https://github.com/polonel/trudesk/compare/v1.0.7...v1.0.8) (2019-03-17)


Expand Down
4 changes: 0 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,6 @@ Password: password
**Trudesk** is built with <a href="https://nodejs.org">nodejs</a> and <a href="https://mongodb.org">mongodb</a> and can run on any cloud provider, docker, bare-metal, or even a raspberry pi.
Take it for a spin on Ubuntu 16.04 with a one liner - <br />`curl -L -s http://www.trudesk.io/install/install_ubuntu.sh | sudo bash`

###### Trudesk Virtual Appliance
The Trudesk Virtual Appliance can quickly deploy to both Virtual Box and VMWare. Visit the appliance documentation for more information.
[Trudesk Virtual Appliance Documentation](http://www.trudesk.io/v1/guide/installation.html#Virtual-Appliance)

### Documentation
Online documentation: [http://www.trudesk.io/docs](http://www.trudesk.io/docs)

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "trudesk",
"version": "1.0.9-beta",
"version": "1.0.9",
"private": true,
"engines": {
"node": ">=9.10.0"
Expand Down
4 changes: 2 additions & 2 deletions src/emitter/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ var notifications = require('../notifications') // Load Push Events
tpsEnabled: tpsEnabled,
tpsUsername: tpsUsername,
tpsApiKey: tpsApiKey,
hostname: hostname
hostname: hostname || baseUrl
},
{ type: 1, ticket: ticketPushClone }
)
Expand All @@ -187,7 +187,7 @@ var notifications = require('../notifications') // Load Push Events
tpsEnabled: tpsEnabled,
tpsUsername: tpsUsername,
tpsApiKey: tpsApiKey,
hostname: hostname
hostname: hostname || baseUrl
},
{ type: 1, ticket: ticket }
)
Expand Down
146 changes: 76 additions & 70 deletions src/models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -524,94 +524,100 @@ userSchema.statics.createUserFromEmail = function (email, callback) {
}

var self = this
var Chance = require('chance')

var chance = new Chance()
var settingSchema = require('./setting')
settingSchema.getSetting('role:user:default', function (err, userRoleDefault) {
if (err || !userRoleDefault) return callback('Invalid Setting - UserRoleDefault')

var plainTextPass = chance.string({
length: 6,
pool: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
})
var Chance = require('chance')

var user = new this({
username: email,
email: email,
password: plainTextPass,
fullname: email,
role: 'user'
})
var chance = new Chance()

self.model(COLLECTION).find({ username: user.username }, function (err, items) {
if (err) return callback(err)
if (_.size(items) > 0) return callback('Username already exists')
var plainTextPass = chance.string({
length: 6,
pool: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
})

user.save(function (err, savedUser) {
if (err) return callback(err)
var user = new self({
username: email,
email: email,
password: plainTextPass,
fullname: email,
role: userRoleDefault.value
})

// Create a group for this user
var GroupSchema = require('./group')
var group = new GroupSchema({
name: savedUser.email,
members: [savedUser._id],
sendMailTo: [savedUser._id],
public: true
})
self.model(COLLECTION).find({ username: user.username }, function (err, items) {
if (err) return callback(err)
if (_.size(items) > 0) return callback('Username already exists')

group.save(function (err, group) {
user.save(function (err, savedUser) {
if (err) return callback(err)

// Send welcome email
var path = require('path')
var mailer = require('../mailer')
var Email = require('email-templates')
var templateDir = path.resolve(__dirname, '..', 'mailer', 'templates')

var email = new Email({
views: {
root: templateDir,
options: {
extension: 'handlebars'
}
}
// Create a group for this user
var GroupSchema = require('./group')
var group = new GroupSchema({
name: savedUser.email,
members: [savedUser._id],
sendMailTo: [savedUser._id],
public: true
})

var settingSchema = require('./setting')
settingSchema.getSetting('gen:siteurl', function (err, setting) {
group.save(function (err, group) {
if (err) return callback(err)

if (!setting) {
setting = { value: '' }
}

var dataObject = {
user: savedUser,
plainTextPassword: plainTextPass,
baseUrl: setting.value
}

email
.render('public-account-created', dataObject)
.then(function (html) {
var mailOptions = {
to: savedUser.email,
subject: 'Welcome to trudesk! - Here are your account details.',
html: html,
generateTextFromHTML: true
// Send welcome email
var path = require('path')
var mailer = require('../mailer')
var Email = require('email-templates')
var templateDir = path.resolve(__dirname, '..', 'mailer', 'templates')

var email = new Email({
views: {
root: templateDir,
options: {
extension: 'handlebars'
}
}
})

var settingSchema = require('./setting')
settingSchema.getSetting('gen:siteurl', function (err, setting) {
if (err) return callback(err)

if (!setting) {
setting = { value: '' }
}

mailer.sendMail(mailOptions, function (err) {
if (err) {
winston.warn(err)
return callback(err)
var dataObject = {
user: savedUser,
plainTextPassword: plainTextPass,
baseUrl: setting.value
}

email
.render('public-account-created', dataObject)
.then(function (html) {
var mailOptions = {
to: savedUser.email,
subject: 'Welcome to trudesk! - Here are your account details.',
html: html,
generateTextFromHTML: true
}

return callback(null, { user: savedUser, group: group })
mailer.sendMail(mailOptions, function (err) {
if (err) {
winston.warn(err)
return callback(err)
}

return callback(null, { user: savedUser, group: group })
})
})
.catch(function (err) {
winston.warn(err)
return callback(err)
})
})
.catch(function (err) {
winston.warn(err)
return callback(err)
})
})
})
})
})
Expand Down
20 changes: 18 additions & 2 deletions src/socketio/accountImportSocket.js
Original file line number Diff line number Diff line change
Expand Up @@ -288,10 +288,26 @@ events.onImportLDAP = function (socket) {

var addedUsers = data.addedUsers
var updatedUsers = data.updatedUsers

var defaultUserRole = null
var completedCount = 0

async.series(
[
function (next) {
var settingSchema = require('../models/setting')
settingSchema.getSetting('role:user:default', function (err, setting) {
if (err || !setting) {
utils.sendToSelf(socket, '$trudesk:accounts:import:error', {
error: 'Default user role not set. Please contact an Administrator.'
})

return next('Default user role not set. Please contact an Administrator')
}

defaultUserRole = setting.value
return next()
})
},
function (next) {
async.eachSeries(
addedUsers,
Expand All @@ -313,7 +329,7 @@ events.onImportLDAP = function (socket) {
fullname: lu.displayName,
email: lu.mail,
title: lu.title,
role: 'user',
role: defaultUserRole,
password: 'Password1!'
})

Expand Down

0 comments on commit fb0face

Please sign in to comment.