Skip to content

Instantly share code, notes, and snippets.

@mborodov
Created February 11, 2015 17:05
Show Gist options
  • Save mborodov/cafca791ad8190e171a1 to your computer and use it in GitHub Desktop.
Save mborodov/cafca791ad8190e171a1 to your computer and use it in GitHub Desktop.
Метод регистрации пользователя
// Метод регистрации пользователя
register: function (req, res) {
logger.warn('Метод регистрации - старт');
// Принимаем переменную email
var email = req.body.email;
var password = utils.generatePassword();
var deviceToken = req.body.deviceToken;
//Убираем символы < и пробелы в deviceToken
if (deviceToken) {
deviceToken = deviceToken.replace(/</g, '');
deviceToken = deviceToken.replace(/ /g, '');
deviceToken = deviceToken.replace(/>/g, '');
}
logger.debug('Принимаем переменные из запроса:', email);
// Создаем первоначальный login на основе email'а
var login = email.substr(0, email.indexOf('@'));
logger.debug('Первоначальный логин: %s', login);
// Создаем объект пользователь и пишем ему свойства
var newUser = new db.user({
username: login.toLowerCase(),
password: password,
email: email.toLowerCase()
});
// Если был передан deviceToken запишем его
if (deviceToken) {
newUser.deviceToken = deviceToken;
}
logger.debug('Объявили объект пользователя: %s', JSON.stringify(newUser));
// Создаем пользователя в базе
newUser.save(function (error, user) {
if (!error && user) {
logger.debug('Пользователь создан успешно: %s', JSON.stringify(user));
// Создаем ему бюджет по умолчанию
var newBudget = new db.budget({
ownerId: user._id,
accounts: [
{
name: 'Кошелёк',
balance: 0
}
],
tags: [
{name: 'Без категории'},
{name: 'Продукты'},
{name: 'Транспорт'},
{name: 'Сотовые и интернет'},
{name: 'Жилье'},
{name: 'Хозрасходы'},
{name: 'Медицина'},
{name: 'Развлечения'},
{name: 'Подарки'}
]
});
//Сохраняем бюджет и пишем ID текущему пользователю
newBudget.save(function (error, budget) {
if (!error && budget) {
var resObject = {"token": jwt.sign(user, config['jwt']), userId: user._id, email: user.email};
logger.info('Регистрация успешна: %s', JSON.stringify(resObject));
res.send(resObject);
//Отправляем ему пароль на почту и отдает ответ
utils.emailRegister(user.email, user.password);
if (utils.mailChimpAction('lists', 'subscribe', { "id": "2b846c34be", "email": { "email" : user.email}, "double_optin": false, "send_welcome": true})) {
utils.mailChimpAction(
'lists', 'update-member',
{
"id" : "2b846c34be",
"email" : { "email" : "mborodov3@gmail.com"},
"merge_vars" : {
"groupings":
[{
"name" : "Платный аккаунт",
"groups" : ["Куплен"]
}]
},
"replace_interests": true
}
)
}
}
logger.warn('Метод регистрации - конец');
});
} else {
// Проверка на дупликат пользователя
if (error.code == 11000) {
logger.warn('Пользователь с таким email уже зареган');
res.send(utils.error(409));
} else {
logger.error('Внутренняя ошибка сервера');
res.send(error);
}
logger.warn('Метод регистрации - конец');
}
});
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment