Skip to content

Commit

Permalink
Add support for custom login ui via provider (#6)
Browse files Browse the repository at this point in the history
  • Loading branch information
andersevenrud committed Jun 28, 2018
1 parent 5e24435 commit 31d3c8f
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions src/providers/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,27 +59,35 @@ const defaultAdapters = {
*/
export default class AuthServiceProvider extends ServiceProvider {

/**
* @param {Object} core OS.js Core
* @param {Object} [args] Arguments
* @param {Object} [args.ui] Options for default login UI adapter
* @param {Function} [args.adapter] Custom login adapter
* @param {Function} [args.login] Custom UI
* @param {Object} [args.config] Configuration object to be passed on
*/
constructor(core, args = {}) {
args = Object.assign({
ui: core.config('auth.login.ui', {}),
config: {}
}, args);

super(core);

const defaultUi = core.config('auth.login.ui', {});

const adapter = core.config('standalone')
? localStorageAuth
: typeof args.adapter === 'function'
? args.adapter
: defaultAdapters[args.adapter || 'server'];

this.ui = new Login(core, args.ui);
this.ui = args.login
? args.login(core, args.config || {})
: new Login(core, args.ui || defaultUi);

this.adapter = Object.assign({
login: () => Promise.reject(new Error('Not implemented')),
logout: () => Promise.reject(new Error('Not implemented')),
init: () => Promise.resolve(true),
destroy: () => {}
}, adapter(core, args.config));
}, adapter(core, args.config || {}));

this.callback = function() {};
}
Expand Down

0 comments on commit 31d3c8f

Please sign in to comment.