Разработка в среде JetCalc
  • Введение
  • Описание инструментов разработки
  • Настройка и администрирование сервера
  • Авторизация
  • Система прав
  • Socket
  • База данных
  • Структура модели базы данных
  • Формы редактирования
  • Планировщик задач
  • Очереди задач
  • Хранение файлов
  • Переводы
  • Расчетная система
    • Работа со справочниками
    • Модуль выполнения расчета ячеек
    • Компилятор языка формул
    • Приведение к первичным значениям
  • Подключаемые модули
  • Стили форматирования ячеек
Powered by GitBook
On this page

Was this helpful?

Авторизация

Для авторизации пользователей используется nodejs библиотека passport и его расширение LocalStrategy.

Весь код расположен в файле src/passport.js

В качестве особенностей реализации, следует обратить внимание на события, которые инициирует библиотека при попытках пройти авторизацию - localauth.

var passport = require('passport');
var LocalStrategy  = require('passport-local').Strategy;
var mongoose = require('mongoose');
var event = require('events').EventEmitter;

passport.Events = new event();

passport.use(new LocalStrategy(
  function(username, password, done) {
    username = (username+'').toLowerCase().trim(); 
    mongoose.model('user').findOne({ LoginUser: username }).isactive().exec(function (err, user) {
      if (err) { 
        return passport.Events.emit('localauth',{status:"error",message:err,username:username});
      }
      if (!user) {
        return passport.Events.emit('localauth',{status:"error",message:"wrongusername",username:username});
      }
      if (!user.IsConfirmed) {
        return passport.Events.emit('localauth',{status:"error",message:"notconfirmed",username:username});
      }
      if (!user.checkPassword(password)) {//
        return passport.Events.emit('localauth',{status:"error",message:"wrongpassword",username:username});
      }
      passport.Events.emit('localauth',{status:"success",user:user._id,username:username});
    });
  }
));


module.exports = passport;

Когда в системе появляется необходимость расширения функционал модуля авторизации, достаточно подписаться на события авторизации и не писать свой код в этом модуле.

Например, модуль audit следит за количеством попыток, блокирует учетную запись при большом количестве ошибок авторизации и оповещает администратора о подозрительном поведении пользователей. Для своей работы ему достаточно подписаться на события localauth.+

Использование библиотеки passport было выбрано с перспективой на вырост. К этой библиотеке написано множество плагинов авторизации включая стандарты OAuth1, OAuth2, LDAP и др.

Пока система авторизации работает только по паре Логин + Пароль.

PreviousНастройка и администрирование сервераNextСистема прав

Last updated 5 years ago

Was this helpful?