72 lines
2.9 KiB
JavaScript
72 lines
2.9 KiB
JavaScript
module.exports = {
|
|
|
|
provider: async function(options, name) {
|
|
const provider = await this.setAuthProvider(name, options);
|
|
|
|
return { identity: provider.identity };
|
|
},
|
|
|
|
identify: async function(options) {
|
|
const provider = await this.getAuthProvider(this.parseRequired(options.provider, 'string', 'auth.validate: provider is required.'));
|
|
|
|
return provider.identity;
|
|
},
|
|
|
|
validate: async function(options) {
|
|
const provider = await this.getAuthProvider(this.parseRequired(options.provider, 'string', 'auth.validate: provider is required.'));
|
|
const { action, username, password, remember } = this.req.body;
|
|
|
|
if (action == 'validate') {
|
|
return provider.validate(username, password);
|
|
}
|
|
|
|
if (action == 'login') {
|
|
return provider.login(username, password, remember);
|
|
}
|
|
|
|
if (action == 'logout') {
|
|
return provider.logout();
|
|
}
|
|
|
|
if (!provider.identity) {
|
|
return provider.unauthorized();
|
|
}
|
|
},
|
|
|
|
login: async function(options) {
|
|
const provider = await this.getAuthProvider(this.parseRequired(options.provider, 'string', 'auth.login: provider is required.'));
|
|
const username = this.parseOptional(options.username, 'string', this.parse('{{$_POST.username}}'));
|
|
const password = this.parseOptional(options.password, 'string', this.parse('{{$_POST.password}}'));
|
|
const remember = this.parseOptional(options.remember, '*', this.parse('{{$_POST.remember}}'));
|
|
|
|
return provider.login(username, password, remember);
|
|
},
|
|
|
|
logout: async function(options) {
|
|
const provider = await this.getAuthProvider(this.parseRequired(options.provider, 'string', 'auth.logout: provider is required.'));
|
|
|
|
return provider.logout();
|
|
},
|
|
|
|
restrict: async function(options) {
|
|
const provider = await this.getAuthProvider(this.parseRequired(options.provider, 'string', 'auth.restrict: provider is required.'));
|
|
|
|
return provider.restrict(this.parse(options));
|
|
},
|
|
|
|
impersonate: async function(options) {
|
|
const provider = await this.getAuthProvider(this.parseRequired(options.provider, 'string', 'auth.impersonate: provider is required.'));
|
|
const identity = this.parseRequired(options.identity, 'string', 'auth.impersonate: identity is required.');
|
|
|
|
return provider.impersonate(identity);
|
|
},
|
|
|
|
verify: async function(options) {
|
|
const provider = await this.getAuthProvider(this.parseRequired(options.provider, 'string', 'auth.verify: provider is required.'));
|
|
const username = this.parseRequired(options.username, 'string', 'auth.verify: username is required.');
|
|
const password = this.parseRequired(options.password, 'string', 'auth.verify: password is required.');
|
|
|
|
return provider.validate(username, password);
|
|
},
|
|
|
|
}; |