First Commit

This commit is contained in:
Luke Berndt
2020-06-09 22:11:11 -04:00
parent 8f49aa463c
commit 3b0d3f290f
551 changed files with 193130 additions and 2 deletions

29
backend/models/call.js Normal file
View File

@@ -0,0 +1,29 @@
var mongoose = require('mongoose');
/*
{ "_id" : ObjectId("5bbc148de26adf00068a0076"), "shortName" : "dcfd", "talkgroupNum" : 11619, "objectKey" : "dcfd-11619-1539052672.m4a", "endpoint" : "nyc3.digitaloceanspaces.com", "bucket" : "openmhz", "time" : ISODate("2018-10-09T02:37:52Z"), "name" : "11619-1539052672.m4a", "freq" : 856987500, "url" : "https://media.openmhz.com/dcfd/2018/10/9/11619-1539052672.m4a", "emergency" : 0, "path" : "/dcfd/2018/10/9/", "srcList" : [ { "pos" : 0, "src" : 1116743 }, { "pos" : 1.8, "src" : 1102467 }, { "pos" : 3.6, "src" : 1116743 } ], "freqList" : [ { "pos" : 0, "freq" : 856987500, "len" : 51744, "errors" : 170, "spikes" : 29 } ], "len" : 6.142 }
*/
var srcSchema = mongoose.Schema({ pos: Number, src: String });
var freqSchema = mongoose.Schema({ pos: Number, freq: Number, len: Number, error: Number, spikes: Number});
var callSchema = mongoose.Schema({
talkgroupNum: Number,
shortName: String,
objectKey: String,
endpoint: String,
bucket: String,
time: Date,
name: String,
freq: Number,
url: String,
emergency: Boolean,
path: String,
len: Number,
star: {
type: Number,
default: 0
},
srcList: [srcSchema],
freqList: [freqSchema]
});
module.exports = mongoose.model('Call', callSchema);

12
backend/models/group.js Normal file
View File

@@ -0,0 +1,12 @@
var mongoose = require('mongoose');
var groupSchema = mongoose.Schema({
shortName: String,
groupName: String,
groupId: String,
position: Number,
talkgroups: [Number]
});
module.exports = mongoose.model('Group', groupSchema);

View File

@@ -0,0 +1,24 @@
// Defining a User Model in mongoose
// Code modified from https://github.com/sahat/hackathon-starter
var mongoose = require("mongoose");
const PermissionSchema = new mongoose.Schema({
userId: mongoose.Schema.Types.ObjectId,
systemId: mongoose.Schema.Types.ObjectId,
shortName: String,
role: {
type: Number,
default: 0
},
ver: {
type: Number,
default: 1.2
}
})
module.exports=mongoose.model("Permission", PermissionSchema)

16
backend/models/star.js Normal file
View File

@@ -0,0 +1,16 @@
var mongoose = require('mongoose');
var Call = require('./call.js')
var starSchema = mongoose.Schema({
talkgroupNum: Number,
shortName: String,
callId: {type: mongoose.Schema.Types.ObjectId, ref: 'Call'},
time: Date,
star: {
type: Number,
default: 0
}
});
module.exports = mongoose.model('Star', starSchema);

31
backend/models/system.js Normal file
View File

@@ -0,0 +1,31 @@
var mongoose = require('mongoose');
var bcrypt = require('bcrypt-nodejs');
var User = require('./user');
var systemSchema = mongoose.Schema({
name: String,
shortName: String,
systemType: String,
county: String,
country: String,
city: String,
state: String,
description: String,
showScreenName: Boolean,
callAvg: Number,
callCount: Number,
active: {type: Boolean, default: false},
planType: {type: Number, default: 0},
userId: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
key: String
});
systemSchema.methods.generateHash = function(password) {
return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
};
systemSchema.methods.validPassword = function(password) {
return bcrypt.compareSync(password, this.local.password);
};
module.exports = mongoose.model('System', systemSchema);

View File

@@ -0,0 +1,17 @@
var mongoose = require('mongoose');
var bcrypt = require('bcrypt-nodejs');
var talkgroupSchema = mongoose.Schema({
shortName: String,
userId: String,
num: Number,
mode: String,
alpha: String,
description: String,
tag: String,
group: String,
priority: Number
});
module.exports = mongoose.model('Talkgroup', talkgroupSchema);

88
backend/models/user.js Normal file
View File

@@ -0,0 +1,88 @@
// Defining a User Model in mongoose
// Code modified from https://github.com/sahat/hackathon-starter
var bcrypt = require("bcrypt-nodejs");
var mongoose = require("mongoose");
var crypto = require("crypto");
const UserSchema = new mongoose.Schema({
local: {
name: String,
email: String,
password: String
},
email: {
type: String,
unique: true,
lowercase: true
},
password: String,
screenName: {
type: String,
unique: true,
lowercase: true
},
firstName: String,
lastName: String,
location: String,
email: String,
resetPasswordToken: String,
resetPasswordTTL: Date,
confirmEmail: {
type: Boolean,
default: false
},
confirmEmailToken: String,
confirmEmailTTL: Date,
admin: {
type: Boolean,
default: false
},
terms: {
type: Number,
default: 0
},
ver: {
type: Number,
default: 1.2
},
sysCount: Number,
lastLogin: { type : Date, default: Date.now }
})
/**
* Password hash middleware.
*/
UserSchema.pre("save", function(next) {
var user = this
if (!user.isModified("password")) return next()
bcrypt.genSalt(8, (err, salt) => {
if (err) return next(err)
bcrypt.hash(user.password, salt, null, (err, hash) => {
if (err) return next(err)
user.password = hash;
user.local.password = hash;
next()
})
})
})
/*
Defining our own custom document instance method
*/
UserSchema.methods = {
comparePassword: function(candidatePassword, cb) {
bcrypt.compare(candidatePassword, this.local.password, (err, isMatch) => {
if (err) return cb(err)
cb(null, isMatch)
})
}
}
/**
* Statics
*/
UserSchema.statics = {}
module.exports=mongoose.model("User", UserSchema)