feat: Adding observers/public/account
This commit is contained in:
95
v1/src/lib/Handlers/Observers/index.js
Normal file
95
v1/src/lib/Handlers/Observers/index.js
Normal file
@@ -0,0 +1,95 @@
|
||||
'user strict';
|
||||
const { getModel } = require( '../../Models' );
|
||||
const apiConfig = require( '../../../config/apiConfig.json' );
|
||||
const { toSha256 } = require( '../../Misc' );
|
||||
const ObserverClient = getModel('observers.client');
|
||||
const ObserverWarehouse = getModel('observers.warehouse');
|
||||
|
||||
const pwd_secret = apiConfig.authentication.pwdSecret;
|
||||
|
||||
function get_model_from_type( user_type ){
|
||||
let observer_model;
|
||||
|
||||
if( user_type == "client" ){
|
||||
observer_model = ObserverClient;
|
||||
}else if( user_type == "warehouse" ){
|
||||
observer_model = ObserverWarehouse;
|
||||
}else{
|
||||
observer_model = null;
|
||||
}
|
||||
return observer_model;
|
||||
}
|
||||
|
||||
async function create_account( user_type, email, password ){
|
||||
let safe_password = toSha256( password + pwd_secret );
|
||||
let user_model = get_model_from_type( user_type );
|
||||
if( user_model == null ){ return null; }
|
||||
|
||||
const user = new user_model({
|
||||
email,
|
||||
password : safe_password,
|
||||
});
|
||||
|
||||
await user.save();
|
||||
return user;
|
||||
}
|
||||
|
||||
async function reset_password( user_type, email, password ){
|
||||
let safe_password = toSha256( password + pwd_secret );
|
||||
let user_model = get_model_from_type( user_type );
|
||||
if( user_model == null ){ return null; }
|
||||
|
||||
const user = await user_model.findOne({ email });
|
||||
|
||||
if( user ){
|
||||
user.password = safe_password;
|
||||
await user.save();
|
||||
return user;
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
async function already_exists( user_type, email ){
|
||||
let user_model = get_model_from_type( user_type );
|
||||
if( user_model == null ){ return null; }
|
||||
|
||||
const user = await user_model.findOne( { email } );
|
||||
if( !user ){
|
||||
return false;
|
||||
}else{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
async function login( user_type, email , password ){
|
||||
let user_model = get_model_from_type( user_type );
|
||||
if( user_model == null ){ return null; }
|
||||
|
||||
let safe_password = toSha256( password + pwd_secret );
|
||||
const user = await user_model.findOne({
|
||||
email , password : safe_password
|
||||
},{ password : 0 , session_token : 0 , session_token_exp : 0 });
|
||||
|
||||
if( !user ){
|
||||
return null;
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
async function login_with_session_token( user_type, session_token ){
|
||||
let user_model = get_model_from_type( user_type );
|
||||
if( user_model == null ){ return null; }
|
||||
|
||||
const user = await user_model.findOne({
|
||||
session_token,
|
||||
session_token_exp : { $gte: new Date() }
|
||||
},{ password : 0 , session_token : 0 , session_token_exp : 0 });
|
||||
|
||||
if( !user ){
|
||||
return null;
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
module.exports = { create_account, already_exists, login, login_with_session_token, reset_password };
|
||||
18
v1/src/lib/Models/Observers/index.js
Normal file
18
v1/src/lib/Models/Observers/index.js
Normal file
@@ -0,0 +1,18 @@
|
||||
const mongoose = require('mongoose');
|
||||
const { Schema } = mongoose;
|
||||
|
||||
const schema = new Schema({
|
||||
email: { type: String, unique: true, lowercase: true },
|
||||
password: { type: String , maxLength : 256 },
|
||||
session_token : { type : String, maxLength : 256 },
|
||||
session_token_exp : { type: Date },
|
||||
createdAt: { type : Date, required : true, default : () => { return Date.now(); } }
|
||||
});
|
||||
|
||||
const warehouse = mongoose.model( "observer_warehouse", schema )
|
||||
const client = mongoose.model( "observer_client", schema )
|
||||
|
||||
module.exports = {
|
||||
warehouse,
|
||||
client
|
||||
};
|
||||
@@ -22,6 +22,8 @@ const trackings = require('./trackings.model.js');
|
||||
const users = require('./users.model.js');
|
||||
const vehicles = require('./vehicles.model.js');
|
||||
|
||||
const observers = require('./Observers')
|
||||
|
||||
function getModel( name ){
|
||||
switch( name ){
|
||||
case 'branches':
|
||||
@@ -66,6 +68,10 @@ function getModel( name ){
|
||||
return users;
|
||||
case 'vehicles':
|
||||
return vehicles;
|
||||
case 'observers.client':
|
||||
return observers.client;
|
||||
case 'observers.warehouse':
|
||||
return observers.warehouse;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user