1 | var Middlewares = function(object) {}
|
2 |
|
3 | var gFunctionAuthenticator = require('letsnet-graphed').functionAuth
|
4 |
|
5 | var mongoose = require('mongoose')
|
6 | var AccountSchema = new mongoose.Schema({
|
7 | id: mongoose.Schema.Types.ObjectId,
|
8 | name: String,
|
9 | title: String,
|
10 | apikeys: [{
|
11 | key: String,
|
12 | email: String
|
13 | }],
|
14 | created: Date,
|
15 | url: {
|
16 | test: String,
|
17 | release: String,
|
18 | production: String
|
19 | },
|
20 | mongooseCredentials: {
|
21 | url: String,
|
22 | user: String,
|
23 | passwd: String
|
24 | },
|
25 | digitalOcean: {
|
26 | dropletId: String
|
27 | },
|
28 | mail: {
|
29 | mail: String,
|
30 | password: String,
|
31 | clientID: String,
|
32 | clientSecret: String,
|
33 | refreshToken: String,
|
34 | from: String
|
35 | }
|
36 | })
|
37 |
|
38 | Middlewares.prototype.gAuthenticateFunction = function(object, queue) {
|
39 | gFunctionAuthenticator({appid: object.appid || '---'}).authenticateFunction({functionID: object.functionID || '---', email: object.email || '---'}, function(error, document) {
|
40 | delete object['functionID']; delete object['appid']
|
41 | if(error) queue.stop({lCode: document.lCode, msg: document.msg, type: 'authentication-error'})
|
42 | else queue.next()
|
43 | })
|
44 | }
|
45 |
|
46 | Middlewares.prototype.getMongooseCredentials = function(object, queue) {
|
47 | if(object.mongooseCredentials === undefined) queue.stop({type: 'credential-error', msg: 'Adja meg a kapcsolathoz szükséges információkat!'})
|
48 | else {
|
49 | let mongodb = mongoose.createConnection('mongodb://' + object.mongooseCredentials.user + ':' + object.mongooseCredentials.passwd + object.mongooseCredentials.url)
|
50 | delete object['mongooseCredentials']
|
51 | let shema = mongodb.model('account', AccountSchema)
|
52 | shema.findOne({apikeys: {$elemMatch: {$or: [{email: object.email }, {key: object.apikey}]}}}, 'mongooseCredentials', function(err, document) {
|
53 | if(err) queue.stop({type: 'connection-error', msg: 'Hiba az adatbázis kapcsolatnál!'})
|
54 | else {
|
55 | mongoose.disconnect()
|
56 | if(document == null) { queue.stop({type: 'query-error', msg: 'Nem található az adatbázisban!'})}
|
57 | else if(document.mongooseCredentials.url === undefined || document.mongooseCredentials.user === undefined || document.mongooseCredentials.passwd === undefined) queue.stop({type: 'query-error', msg: 'Nem találhatók az adatbázis kapcsolathoz szükséges információk!'})
|
58 | else {
|
59 | object.userMongooseCredentials = document.mongooseCredentials
|
60 | queue.next()
|
61 | }
|
62 | }
|
63 | })
|
64 | }
|
65 | }
|
66 |
|
67 | Middlewares.prototype.getMongooseCredentialsByAppID = function(object, queue) {
|
68 | if(object.mongooseCredentials === undefined) queue.stop({type: 'credential-error', msg: 'Adja meg a kapcsolathoz szükséges információkat!'})
|
69 | else {
|
70 | let mongodb = mongoose.createConnection('mongodb://' + object.mongooseCredentials.user + ':' + object.mongooseCredentials.passwd + object.mongooseCredentials.url)
|
71 | delete object['mongooseCredentials']
|
72 | let shema = mongodb.model('account', AccountSchema)
|
73 | shema.findOne({apikeys: {$elemMatch: {key: object.apikey}}}, 'mongooseCredentials', function(err, document) {
|
74 | if(err) queue.stop({type: 'connection-error', msg: 'Hiba az adatbázis kapcsolatnál!'})
|
75 | else {
|
76 | mongoose.disconnect()
|
77 | if(document == null) { queue.stop({type: 'query-error', msg: 'Nem található az adatbázisban!'})}
|
78 | else if(document.mongooseCredentials.url === undefined || document.mongooseCredentials.user === undefined || document.mongooseCredentials.passwd === undefined) queue.stop({type: 'query-error', msg: 'Nem találhatók az adatbázis kapcsolathoz szükséges információk!'})
|
79 | else {
|
80 | object.userMongooseCredentials = document.mongooseCredentials
|
81 | queue.next()
|
82 | }
|
83 | }
|
84 | })
|
85 | }
|
86 | }
|
87 |
|
88 | Middlewares.prototype.prepareApikey = function(object, queue) {
|
89 | if(object.apikey === undefined) queue.stop({msg: 'authentication-error', msg: 'Nem található apikey!'})
|
90 | else {
|
91 | object.apikey = apikey.slice(7)
|
92 | queue.next()
|
93 | }
|
94 | }
|
95 |
|
96 | module.exports = Middlewares |
\ | No newline at end of file |