diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 4cde2d1d..00000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index 99995a2b..ad18b101 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ coverage/* libpeerconnection.log npm-debug.log testem.log +.DS_Store # files generated by older build tools public/scripts diff --git a/app/routes/application.coffee b/app/routes/application.coffee index 9838bfc5..de66f55e 100644 --- a/app/routes/application.coffee +++ b/app/routes/application.coffee @@ -5,6 +5,11 @@ Route = TravisRoute.extend BuildFaviconMixin, needsAuth: false + beforeModel: -> + @_super.apply(this, arguments) + + @get('auth').refreshUserData() + renderTemplate: -> if @get('config').pro $('body').addClass('pro') diff --git a/app/styles/app/layouts/build-job.sass b/app/styles/app/layouts/build-job.sass index 344469dc..22831b85 100644 --- a/app/styles/app/layouts/build-job.sass +++ b/app/styles/app/layouts/build-job.sass @@ -50,6 +50,8 @@ width: 1.4em .icon--env width: 1.1em + .icon.api + height: 1.5em @media #{$medium-up} height: 36px diff --git a/app/styles/app/modules/icons.sass b/app/styles/app/modules/icons.sass index 90c89c65..f10322c2 100644 --- a/app/styles/app/modules/icons.sass +++ b/app/styles/app/modules/icons.sass @@ -88,6 +88,12 @@ .icon--grey.pull_request background-image: inline-image('svg/icon-request-pull.svg') +.icon-api, +.icon.api + background-image: inline-image('svg/api-white.svg') +.icon--grey.api + background-image: inline-image('svg/api-light-grey.svg') + .icon-lock background-image: inline-image('dashboard/private-icon.svg') diff --git a/app/styles/app/modules/tiles.sass b/app/styles/app/modules/tiles.sass index ad7e284c..d3c9fd4d 100644 --- a/app/styles/app/modules/tiles.sass +++ b/app/styles/app/modules/tiles.sass @@ -105,21 +105,22 @@ height: 100% border-top-left-radius: 4px border-bottom-left-radius: 4px - .icon-status + .icon display: block + .icon-status width: 1.1em height: 1.2em margin: .7em auto 1em .icon.push - display: block width: 1.4em height: 1.1em margin: -0.2em auto 0 .icon.pull_request - display: block width: 1.1em height: 1.6em margin: -0.5em auto 0 + .icon.api + margin: -0.4em 0.75em .icon--job @extend %absolute-center @@ -154,6 +155,8 @@ white-space: nowrap @media #{$xlarge-up} @include grid-column(5) + .icon.api + margin: -0.2em 0.75em p.tile-single-line padding: .7em 0 diff --git a/app/templates/build.hbs b/app/templates/build.hbs index 398a5e2b..8e42bc9c 100644 --- a/app/templates/build.hbs +++ b/app/templates/build.hbs @@ -3,8 +3,8 @@ {{else}}
- - + +
diff --git a/app/templates/components/builds-item.hbs b/app/templates/components/builds-item.hbs index eb6f3d65..ce555266 100644 --- a/app/templates/components/builds-item.hbs +++ b/app/templates/components/builds-item.hbs @@ -1,6 +1,6 @@
- - + +
diff --git a/app/templates/job.hbs b/app/templates/job.hbs index 81b394e8..d1c83dea 100644 --- a/app/templates/job.hbs +++ b/app/templates/job.hbs @@ -2,8 +2,8 @@
- - + +
diff --git a/app/utils/auth.coffee b/app/utils/auth.coffee index 6a894333..15d823d1 100644 --- a/app/utils/auth.coffee +++ b/app/utils/auth.coffee @@ -52,11 +52,16 @@ Auth = Ember.Object.extend null validateUser: (user) -> - fieldsToValidate = ['id', 'login', 'token', 'correct_scopes'] + fieldsToValidate = ['id', 'login', 'token'] + isTravisBecome = sessionStorage.getItem('travis.become') + + unless isTravisBecome + fieldsToValidate.push 'correct_scopes' + if config.pro fieldsToValidate.push 'channels' - fieldsToValidate.every( (field) => @validateHas(field, user) ) && user.correct_scopes + fieldsToValidate.every( (field) => @validateHas(field, user) ) && (isTravisBecome || user.correct_scopes) validateHas: (field, user) -> if user[field] @@ -74,18 +79,26 @@ Auth = Ember.Object.extend @set('state', 'signed-in') Travis.trigger('user:signed_in', data.user) @sendToApp('afterSignIn') - @refreshUserData(data.user) refreshUserData: (user) -> - Ajax.get "/users/#{user.id}", (data) => - @store.pushPayload(users: [data.user]) - # if user is still signed in, update saved data - if @get('signedIn') - data.user.token = user.token - @storeData(data, @sessionStorage) - @storeData(data, @storage) - , (status, xhr) => - @signOut() if status == 403 + unless user + if data = @userDataFrom(@sessionStorage) || @userDataFrom(@storage) + user = data.user + + if user + Ajax.get "/users/#{user.id}", (data) => + if data.user.correct_scopes + userRecord = @loadUser(data.user) + userRecord.get('permissions') + # if user is still signed in, update saved data + if @get('signedIn') + data.user.token = user.token + @storeData(data, @sessionStorage) + @storeData(data, @storage) + else + @signOut() + , (status, xhr) => + @signOut() if status == 403 signedIn: (-> @get('state') == 'signed-in' @@ -105,9 +118,7 @@ Auth = Ember.Object.extend loadUser: (user) -> @store.pushPayload(users: [user]) - user = @store.recordForId('user', user.id) - user.get('permissions') - user + @store.recordForId('user', user.id) receiveMessage: (event) -> if event.origin == @expectedOrigin() @@ -129,9 +140,9 @@ Auth = Ember.Object.extend # as a direct response to either manual sign in or autoSignIn (right now # we treat both cases behave the same in terms of sent events which I think # makes it more complicated than it should be). - controller = @container.lookup('controller:auth') + router = @container.lookup('router:main') try - controller.send(name) + router.send(name) catch error unless error.message =~ /Can't trigger action/ throw error diff --git a/app/utils/test-auth.coffee b/app/utils/test-auth.coffee index fdffd7a3..64010270 100644 --- a/app/utils/test-auth.coffee +++ b/app/utils/test-auth.coffee @@ -48,4 +48,6 @@ Auth = Ember.Object.extend if @get('state') == 'signed-in' 'a-token' + refreshUserData: (->) + `export default Auth` diff --git a/assets/images/.DS_Store b/assets/images/.DS_Store deleted file mode 100644 index febda9aa..00000000 Binary files a/assets/images/.DS_Store and /dev/null differ diff --git a/assets/images/ui/.DS_Store b/assets/images/ui/.DS_Store deleted file mode 100644 index 5008ddfc..00000000 Binary files a/assets/images/ui/.DS_Store and /dev/null differ diff --git a/public/.DS_Store b/public/.DS_Store deleted file mode 100644 index 5008ddfc..00000000 Binary files a/public/.DS_Store and /dev/null differ diff --git a/public/images/svg/api-dark-grey.svg b/public/images/svg/api-dark-grey.svg new file mode 100644 index 00000000..72d4c7f9 --- /dev/null +++ b/public/images/svg/api-dark-grey.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/public/images/svg/api-light-grey.svg b/public/images/svg/api-light-grey.svg new file mode 100644 index 00000000..2fa4e7dc --- /dev/null +++ b/public/images/svg/api-light-grey.svg @@ -0,0 +1,10 @@ + + + + + + diff --git a/public/images/svg/api-white.svg b/public/images/svg/api-white.svg new file mode 100644 index 00000000..3956236f --- /dev/null +++ b/public/images/svg/api-white.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/waiter/lib/travis/web/set_token.rb b/waiter/lib/travis/web/set_token.rb index af73cbdc..82907ae8 100644 --- a/waiter/lib/travis/web/set_token.rb +++ b/waiter/lib/travis/web/set_token.rb @@ -33,5 +33,6 @@ __END__ var storage = %s; storage.setItem('travis.token', %p); storage.setItem('travis.user', %p); +storage.setItem('travis.become', true); window.location = %p;