mirror of https://github.com/rancher/ui.git
100 lines
2.6 KiB
JavaScript
100 lines
2.6 KiB
JavaScript
import GithubSetting from 'pipeline/components/github-setting/component';
|
|
import { set, get, setProperties, observer } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
|
|
export default GithubSetting.extend({
|
|
intl: service(),
|
|
router: service(),
|
|
settings: service(),
|
|
|
|
oauthType: 'bitbucketserver',
|
|
oauthHost: 'bitbucket.org',
|
|
applicationLink: null,
|
|
consumerKey: null,
|
|
publicKey: null,
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
|
|
setProperties(this, {
|
|
isEnterprise: true,
|
|
applicationLink: window.location.href
|
|
})
|
|
const provider = get(this, 'provider');
|
|
|
|
if ( !get(provider, 'consumerKey') ) {
|
|
set(this, 'generating', true);
|
|
provider.doAction('generateKeys').finally(() => {
|
|
set(this, 'generating', false);
|
|
});
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
authenticate() {
|
|
const hostname = get(this, 'oauthModel.hostName');
|
|
const errors = [];
|
|
|
|
if ( !hostname ) {
|
|
errors.pushObject(get(this, 'intl').t('authPage.bitbucketserver.form.hostname.required'));
|
|
}
|
|
set(this, 'errors', errors);
|
|
|
|
if ( get(errors, 'length') > 0 ) {
|
|
return;
|
|
}
|
|
|
|
set(this, 'testing', true);
|
|
const provider = get(this, 'provider');
|
|
const tls = get(this, 'secure');
|
|
const redirectUrl = `${ get(this, 'destinationUrl') }/verify-auth`;
|
|
|
|
provider.doAction('requestLogin', {
|
|
hostname,
|
|
redirectUrl,
|
|
tls
|
|
}).then((res) => {
|
|
const authorizeURL = get(res, 'loginUrl');
|
|
|
|
get(this, 'gitService').authorizeTest(
|
|
authorizeURL,
|
|
(err, code) => {
|
|
if (err) {
|
|
this.send('gotError', err);
|
|
set(this, 'testing', false);
|
|
} else {
|
|
this.send('gotCode', code, hostname, redirectUrl, tls);
|
|
}
|
|
}
|
|
);
|
|
}).catch(() => {
|
|
set(this, 'testing', false);
|
|
});
|
|
},
|
|
|
|
gotCode(code, hostname, redirectUrl, tls) {
|
|
const param = {
|
|
hostname,
|
|
oauthToken: get(code, 'oauthToken'),
|
|
oauthVerifier: get(code, 'oauthVerifier'),
|
|
redirectUrl,
|
|
tls,
|
|
};
|
|
|
|
get(this, 'provider').doAction('testAndApply', param).then(() => {
|
|
get(this, 'router').transitionTo('authenticated.project.pipeline.repositories');
|
|
}).finally(() => {
|
|
set(this, 'testing', false);
|
|
});
|
|
},
|
|
},
|
|
|
|
targetDidChange: observer('target', function() {
|
|
this.switch('bitbucketcloud');
|
|
}),
|
|
|
|
switch() {
|
|
throw new Error('switch action is required!');
|
|
}
|
|
});
|