mirror of https://github.com/rancher/ui.git
104 lines
3.0 KiB
JavaScript
104 lines
3.0 KiB
JavaScript
import { equal } from '@ember/object/computed';
|
|
import { inject as service } from '@ember/service';
|
|
import Resource from 'ember-api-store/models/resource';
|
|
import C from 'ui/utils/constants';
|
|
|
|
var Identity = Resource.extend({
|
|
intl: service(),
|
|
|
|
isUser: equal('externalIdType', C.PROJECT.TYPE_USER),
|
|
isTeam: equal('externalIdType', C.PROJECT.TYPE_TEAM),
|
|
isOrg: equal('externalIdType', C.PROJECT.TYPE_ORG),
|
|
|
|
avatarSrc: function() {
|
|
if ( this.get('isGithub') && this.get('profilePicture') )
|
|
{
|
|
return this.get('profilePicture');
|
|
}
|
|
else
|
|
{
|
|
return 'data:image/png;base64,' + new Identicon(AWS.util.crypto.md5(this.get('externalId')||'Unknown', 'hex'), 80, 0.01).toString();
|
|
}
|
|
}.property('isGithub','externalId','profilePicture'),
|
|
|
|
isGithub: function() {
|
|
return [
|
|
C.PROJECT.TYPE_GITHUB_ORG,
|
|
C.PROJECT.TYPE_GITHUB_TEAM,
|
|
C.PROJECT.TYPE_GITHUB_USER
|
|
].indexOf(this.get('externalIdType')) >= 0;
|
|
}.property('externalIdType'),
|
|
|
|
isMyRancher: function() {
|
|
// @TODO-2.0
|
|
return false
|
|
}.property('{externalId,externalIdType}'),
|
|
|
|
logicalType: function() {
|
|
switch ( this.get('externalIdType') )
|
|
{
|
|
case C.PROJECT.TYPE_RANCHER:
|
|
case C.PROJECT.TYPE_AZURE_USER:
|
|
case C.PROJECT.TYPE_GITHUB_USER:
|
|
case C.PROJECT.TYPE_LDAP_USER:
|
|
case C.PROJECT.TYPE_OPENLDAP_USER:
|
|
case C.PROJECT.TYPE_SHIBBOLETH_USER:
|
|
return C.PROJECT.PERSON;
|
|
|
|
case C.PROJECT.TYPE_GITHUB_TEAM:
|
|
return C.PROJECT.TEAM;
|
|
|
|
case C.PROJECT.TYPE_GITHUB_ORG:
|
|
case C.PROJECT.TYPE_AZURE_GROUP:
|
|
case C.PROJECT.TYPE_LDAP_GROUP:
|
|
case C.PROJECT.TYPE_OPENLDAP_GROUP:
|
|
case C.PROJECT.TYPE_SHIBBOLETH_GROUP:
|
|
return C.PROJECT.ORG;
|
|
}
|
|
}.property('externalIdType'),
|
|
|
|
logicalTypeSort: function() {
|
|
switch (this.get('logicalType') )
|
|
{
|
|
case C.PROJECT.ORG: return 1;
|
|
case C.PROJECT.TEAM: return 2;
|
|
case C.PROJECT.PERSON: return 3;
|
|
default: return 4;
|
|
}
|
|
}.property('logicalType'),
|
|
|
|
displayType: function() {
|
|
let key = 'model.identity.displayType.unknown';
|
|
let type = this.get('externalIdType');
|
|
switch ( type )
|
|
{
|
|
case C.PROJECT.TYPE_GITHUB_USER:
|
|
case C.PROJECT.TYPE_AZURE_USER:
|
|
case C.PROJECT.TYPE_LDAP_USER:
|
|
case C.PROJECT.TYPE_OPENLDAP_USER:
|
|
case C.PROJECT.TYPE_SHIBBOLETH_USER:
|
|
key = 'model.identity.displayType.user';
|
|
break;
|
|
case C.PROJECT.TYPE_AZURE_GROUP:
|
|
case C.PROJECT.TYPE_LDAP_GROUP:
|
|
case C.PROJECT.TYPE_OPENLDAP_GROUP:
|
|
case C.PROJECT.TYPE_SHIBBOLETH_GROUP:
|
|
key = 'model.identity.displayType.group';
|
|
break;
|
|
case C.PROJECT.TYPE_GITHUB_TEAM:
|
|
key = 'model.identity.displayType.team';
|
|
break;
|
|
case C.PROJECT.TYPE_GITHUB_ORG:
|
|
key = 'model.identity.displayType.org';
|
|
break;
|
|
case C.PROJECT.TYPE_RANCHER:
|
|
key = 'model.identity.displayType.localUser';
|
|
break;
|
|
}
|
|
|
|
return this.get('intl').t(key, {type: type});
|
|
}.property('externalIdType','intl.locale'),
|
|
});
|
|
|
|
export default Identity;
|