Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///<reference path='./../../lib/def/defLoader.d.ts'/>
- var __extends = this.__extends || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- __.prototype = b.prototype;
- d.prototype = new __();
- };
- var model = require('./Model');
- (function (Models) {
- /**
- * Model used to manage users.
- * The model is primary static, but, to make it easy to use, some things are also stored for each instance.
- * That allows the code to use both Model or instance of Model such as:
- * Model.schema
- * model.Schema
- */
- var UserModel = (function (_super) {
- __extends(UserModel, _super);
- function UserModel() {
- _super.apply(this, arguments);
- /**
- * Helpers to always get the property, from instance or static.
- */
- this.modelName = UserModel.modelName;
- this.schema = UserModel.schema;
- this.model = UserModel.model;
- }
- /**
- * Returns the protected fields.
- * @returns {string[]}
- */
- UserModel.getProtectedFields = function () {
- return this._protectedFields;
- };
- /**
- * Hash a user password depending on the password hash configuration. Currently SHA256 in hexadecimal.
- * Assuming crypto is global.
- * @param password User password.
- * @returns {string} Hashed password.
- */
- UserModel.hashPassword = function (password) {
- return crypto.createHash(UserModel._passwordHashMethod).update(password).digest(UserModel._passwordDigest);
- };
- UserModel.modelName = 'User';
- UserModel.schema = require('../schemas/userSchema.js');
- UserModel.Schema = model.Models.Model.getNewSchemaInstance(UserModel);
- UserModel.model = model.Models.Model.getNewModelInstance(UserModel);
- UserModel._protectedFields = [
- 'login',
- 'email'
- ];
- UserModel._passwordHashMethod = 'sha256';
- UserModel._passwordDigest = 'hex';
- return UserModel;
- })(model.Models.Model);
- Models.UserModel = UserModel;
- /**
- * Don't forget that some methods such as exists() are written in the Model class and available for all Models.
- * The following methods belong ONLY to the mongoose model instance, not to the Model class itself!
- *
- *************************************************************************************************
- ******************************** Extended Model methods *****************************************
- *************************************************************************************************
- */
- /**
- * Connect a user to the game.
- * @param user User to check. {}
- * @param callback Callback to execute.
- */
- UserModel.model.checkAuthentication = function (user, callback) {
- // Force to provide login and password.
- UserModel.model.exists({ login: user.login, password: UserModel.hashPassword(user.password) }, function (err, userFound) {
- // Load public profile.
- UserModel.model._getProtectedInformation(userFound, function (userPublic) {
- // Provides only public fields.
- callback(new __message("__17", { err: err, user: userPublic }, !err && userFound ? true : false));
- });
- });
- };
- /**
- * Get the protected fields for the found user.
- * @param user User to find.
- * @param callback Callback to execute.
- */
- UserModel.model.getProtectedInformation = function (user, callback) {
- // We are looking for an unique user.
- UserModel.model.exists(user, function (err, userFound) {
- if (err) {
- UserModel.model.errorHandler(err, UserModel, callback);
- } else {
- // Load public profile.
- UserModel.model._getProtectedInformation(userFound, function (userPublic) {
- // Provides only public fields.
- callback(new __message('', { err: err, user: userPublic }, err ? false : true));
- });
- }
- });
- };
- /**
- * Get the protected fields of a user.
- * @param user Instance of model.
- * @param callback Callback to execute.
- * @private
- */
- UserModel.model.hashPassword = function (user, callback) {
- var err = false;
- if (user && user.password) {
- user.password = UserModel.hashPassword(user.password);
- } else {
- err = true;
- }
- callback(new __message(err ? '__18' : '', { user: user }, err ? false : true));
- };
- /**
- *************************************************************************************************
- *************************** Methods to use only locally (private) *******************************
- *************************************************************************************************
- */
- /**
- * Get the protected fields of a user.
- * @param user Instance of model.
- * @param callback Callback to execute.
- * @private
- */
- UserModel.model._getProtectedInformation = function (user, callback) {
- var userPublic = {};
- // Get fields to share.
- var publicFields = UserModel.getProtectedFields();
- for (var field in publicFields) {
- userPublic[publicFields[field]] = user[publicFields[field]];
- }
- callback(userPublic);
- };
- })(exports.Models || (exports.Models = {}));
- var Models = exports.Models;
- //# sourceMappingURL=UserModel.js.map
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement