Files
node-red-alexa-home-skill-web/models/oauth.js

71 lines
2.1 KiB
JavaScript
Raw Normal View History

2016-10-30 11:31:39 +00:00
var uid = require('uid2');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
2016-11-04 21:20:29 +00:00
var AutoIncrement = require('mongoose-sequence');
2016-10-30 11:31:39 +00:00
var ApplicationSchema = new Schema({
title: { type: String, required: true },
oauth_id: { type: Number, unique: true },
oauth_secret: { type: String, unique: true, default: function() {
return uid(42);
}
},
domains: [ { type: String } ]
});
var GrantCodeSchema = new Schema({
code: { type: String, unique: true, default: function() {
return uid(24);
}
},
2016-11-04 23:10:12 +00:00
user: { type: Schema.Types.ObjectId, ref: 'Account' },
2016-10-30 11:31:39 +00:00
application: { type: Schema.Types.ObjectId, ref: 'Application' },
scope: [ { type: String } ],
active: { type: Boolean, default: true }
});
var AccessTokenSchema = new Schema({
token: { type: String, unique: true, default: function() {
return uid(124);
}
},
2016-11-04 23:10:12 +00:00
user: { type: Schema.Types.ObjectId, ref: 'Account' },
2016-10-30 11:31:39 +00:00
application: { type: Schema.Types.ObjectId, ref: 'Application' },
grant: { type: Schema.Types.ObjectId, ref: 'GrantCode' },
scope: [ { type: String }],
expires: { type: Date, default: function(){
var today = new Date();
//var length = 60 * 24 * 90; // Length (in minutes) of our access token
var length = 60 * 24 * 365 * 100;
2016-10-30 11:31:39 +00:00
return new Date(today.getTime() + length*60000);
} },
active: { type: Boolean, get: function(value) {
if (this.expires < new Date() || !value) {
return false;
} else {
return value;
}
}, default: true }
});
2016-11-05 17:04:18 +00:00
var RefreshTokenSchema = new Schema({
token: { type: String, unique: true, default: function(){
return uid(124);
}},
user: { type: Schema.Types.ObjectId, ref: 'Account' },
application: { type: Schema.Types.ObjectId, ref: 'Application' }
});
2016-11-04 21:20:29 +00:00
ApplicationSchema.plugin(AutoIncrement, {inc_field: 'oauth_id'});
2016-10-30 11:31:39 +00:00
var Application = mongoose.model('Application', ApplicationSchema);
var GrantCode = mongoose.model('GrantCode', GrantCodeSchema);
var AccessToken = mongoose.model('AccessToken', AccessTokenSchema);
2016-11-05 17:04:18 +00:00
var RefreshToken = mongoose.model('RefreshToken', RefreshTokenSchema);
2016-10-30 11:31:39 +00:00
module.exports = {
Application: Application,
GrantCode: GrantCode,
2016-11-05 17:04:18 +00:00
AccessToken: AccessToken,
RefreshToken: RefreshToken
2016-10-30 11:31:39 +00:00
}