Add instagram background implementation and generalize application for other identity providers
This commit is contained in:
@@ -54,6 +54,7 @@ gem 'simply_stored', github: 'bterkuile/simply_stored'
|
|||||||
gem 'devise', github: 'plataformatec/devise', branch: 'lm-rails-4-2' #, '3.1.0' #, '2.0.4'
|
gem 'devise', github: 'plataformatec/devise', branch: 'lm-rails-4-2' #, '3.1.0' #, '2.0.4'
|
||||||
gem 'devise_simply_stored', github: 'bterkuile/devise_simply_stored'
|
gem 'devise_simply_stored', github: 'bterkuile/devise_simply_stored'
|
||||||
gem "omniauth-facebook"
|
gem "omniauth-facebook"
|
||||||
|
gem "omniauth-instagram"
|
||||||
#gem 'simple_form'
|
#gem 'simple_form'
|
||||||
gem 'active_decorator' #, path: '/Users/bterkuile/companytools/development/rails/components/active_decorator'
|
gem 'active_decorator' #, path: '/Users/bterkuile/companytools/development/rails/components/active_decorator'
|
||||||
#gem 'cmtool', github: 'bterkuile/cmtool'
|
#gem 'cmtool', github: 'bterkuile/cmtool'
|
||||||
|
|||||||
+33
-26
@@ -115,7 +115,7 @@ GEM
|
|||||||
sass (~> 3.3)
|
sass (~> 3.3)
|
||||||
thor
|
thor
|
||||||
builder (3.2.2)
|
builder (3.2.2)
|
||||||
capistrano (3.3.4)
|
capistrano (3.3.5)
|
||||||
capistrano-stats (~> 1.1.0)
|
capistrano-stats (~> 1.1.0)
|
||||||
i18n
|
i18n
|
||||||
rake (>= 10.0.0)
|
rake (>= 10.0.0)
|
||||||
@@ -129,7 +129,7 @@ GEM
|
|||||||
capistrano-rvm (0.1.2)
|
capistrano-rvm (0.1.2)
|
||||||
capistrano (~> 3.0)
|
capistrano (~> 3.0)
|
||||||
sshkit (~> 1.2)
|
sshkit (~> 1.2)
|
||||||
capistrano-stats (1.1.0)
|
capistrano-stats (1.1.1)
|
||||||
capybara (2.4.4)
|
capybara (2.4.4)
|
||||||
mime-types (>= 1.16)
|
mime-types (>= 1.16)
|
||||||
nokogiri (>= 1.3.3)
|
nokogiri (>= 1.3.3)
|
||||||
@@ -156,7 +156,7 @@ GEM
|
|||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.8.0)
|
coffee-script-source (1.8.0)
|
||||||
colored (1.2)
|
colored (1.2)
|
||||||
colorize (0.7.4)
|
colorize (0.7.5)
|
||||||
cookiejar (0.3.2)
|
cookiejar (0.3.2)
|
||||||
couchrest (1.2.0)
|
couchrest (1.2.0)
|
||||||
mime-types (~> 1.15)
|
mime-types (~> 1.15)
|
||||||
@@ -177,7 +177,7 @@ GEM
|
|||||||
activemodel
|
activemodel
|
||||||
ember-data-source (1.0.0.beta.12)
|
ember-data-source (1.0.0.beta.12)
|
||||||
ember-source
|
ember-source
|
||||||
ember-rails (0.15.0)
|
ember-rails (0.15.1)
|
||||||
active_model_serializers
|
active_model_serializers
|
||||||
barber (>= 0.4.1)
|
barber (>= 0.4.1)
|
||||||
ember-data-source (>= 1.0.0.beta.5)
|
ember-data-source (>= 1.0.0.beta.5)
|
||||||
@@ -198,7 +198,7 @@ GEM
|
|||||||
ember-rails (>= 0.14.0)
|
ember-rails (>= 0.14.0)
|
||||||
emblem-source (0.3.17)
|
emblem-source (0.3.17)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
eventmachine (1.0.3)
|
eventmachine (1.0.4)
|
||||||
execjs (2.2.2)
|
execjs (2.2.2)
|
||||||
factory_girl (4.5.0)
|
factory_girl (4.5.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
@@ -215,14 +215,14 @@ GEM
|
|||||||
multi_json (>= 1.0.0)
|
multi_json (>= 1.0.0)
|
||||||
rack (>= 1.0.0)
|
rack (>= 1.0.0)
|
||||||
websocket-driver (>= 0.3.0)
|
websocket-driver (>= 0.3.0)
|
||||||
faye-websocket (0.8.0)
|
faye-websocket (0.9.2)
|
||||||
eventmachine (>= 0.12.0)
|
eventmachine (>= 0.12.0)
|
||||||
websocket-driver (>= 0.4.0)
|
websocket-driver (>= 0.5.1)
|
||||||
font-awesome-rails (4.2.0.0)
|
font-awesome-rails (4.2.0.0)
|
||||||
railties (>= 3.2, < 5.0)
|
railties (>= 3.2, < 5.0)
|
||||||
foundation-rails (5.4.5.0)
|
foundation-rails (5.5.0.0)
|
||||||
railties (>= 3.1.0)
|
railties (>= 3.1.0)
|
||||||
sass (>= 3.2.0)
|
sass (>= 3.2.0, < 3.4)
|
||||||
fuubar (2.0.0)
|
fuubar (2.0.0)
|
||||||
rspec (~> 3.0)
|
rspec (~> 3.0)
|
||||||
ruby-progressbar (~> 1.4)
|
ruby-progressbar (~> 1.4)
|
||||||
@@ -234,11 +234,11 @@ GEM
|
|||||||
hashie (3.3.2)
|
hashie (3.3.2)
|
||||||
hike (1.2.3)
|
hike (1.2.3)
|
||||||
http_parser.rb (0.6.0)
|
http_parser.rb (0.6.0)
|
||||||
i18n (0.7.0.beta1)
|
i18n (0.7.0)
|
||||||
iso_country_codes (0.6.1)
|
iso_country_codes (0.6.1)
|
||||||
jquery-rails (4.0.0)
|
jquery-rails (4.0.1)
|
||||||
rails-dom-testing (~> 1.0)
|
rails-dom-testing (~> 1.0)
|
||||||
railties (>= 4.2.0.beta, < 5.0)
|
railties (>= 4.2.0.beta)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
jquery-ui-rails (5.0.3)
|
jquery-ui-rails (5.0.3)
|
||||||
railties (>= 3.2.16)
|
railties (>= 3.2.16)
|
||||||
@@ -262,7 +262,7 @@ GEM
|
|||||||
mime-types (1.25.1)
|
mime-types (1.25.1)
|
||||||
mini_magick (4.0.1)
|
mini_magick (4.0.1)
|
||||||
mini_portile (0.6.1)
|
mini_portile (0.6.1)
|
||||||
minitest (5.4.3)
|
minitest (5.5.0)
|
||||||
multi_json (1.10.1)
|
multi_json (1.10.1)
|
||||||
multi_xml (0.5.5)
|
multi_xml (0.5.5)
|
||||||
multipart-post (2.0.0)
|
multipart-post (2.0.0)
|
||||||
@@ -282,6 +282,9 @@ GEM
|
|||||||
rack (~> 1.0)
|
rack (~> 1.0)
|
||||||
omniauth-facebook (2.0.0)
|
omniauth-facebook (2.0.0)
|
||||||
omniauth-oauth2 (~> 1.2)
|
omniauth-oauth2 (~> 1.2)
|
||||||
|
omniauth-instagram (1.0.1)
|
||||||
|
omniauth (~> 1.0)
|
||||||
|
omniauth-oauth2 (~> 1.0)
|
||||||
omniauth-oauth2 (1.2.0)
|
omniauth-oauth2 (1.2.0)
|
||||||
faraday (>= 0.8, < 0.10)
|
faraday (>= 0.8, < 0.10)
|
||||||
multi_json (~> 1.3)
|
multi_json (~> 1.3)
|
||||||
@@ -301,8 +304,8 @@ GEM
|
|||||||
pry (>= 0.9.10)
|
pry (>= 0.9.10)
|
||||||
quiet_assets (1.0.3)
|
quiet_assets (1.0.3)
|
||||||
railties (>= 3.1, < 5.0)
|
railties (>= 3.1, < 5.0)
|
||||||
rack (1.6.0.beta2)
|
rack (1.6.0)
|
||||||
rack-cors (0.2.9)
|
rack-cors (0.3.0)
|
||||||
rack-test (0.6.2)
|
rack-test (0.6.2)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
rails (4.2.0.rc2)
|
rails (4.2.0.rc2)
|
||||||
@@ -361,8 +364,8 @@ GEM
|
|||||||
rspec-mocks (~> 3.1.0)
|
rspec-mocks (~> 3.1.0)
|
||||||
rspec-support (~> 3.1.0)
|
rspec-support (~> 3.1.0)
|
||||||
rspec-support (3.1.2)
|
rspec-support (3.1.2)
|
||||||
ruby-progressbar (1.7.0)
|
ruby-progressbar (1.7.1)
|
||||||
sass (3.4.9)
|
sass (3.3.14)
|
||||||
sass-rails (5.0.0.beta1)
|
sass-rails (5.0.0.beta1)
|
||||||
railties (>= 4.0.0, < 5.0)
|
railties (>= 4.0.0, < 5.0)
|
||||||
sass (~> 3.2)
|
sass (~> 3.2)
|
||||||
@@ -373,17 +376,18 @@ GEM
|
|||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
simplecov-html (~> 0.8.0)
|
simplecov-html (~> 0.8.0)
|
||||||
simplecov-html (0.8.0)
|
simplecov-html (0.8.0)
|
||||||
slim (2.1.0)
|
slim (3.0.0)
|
||||||
temple (~> 0.6.9)
|
temple (~> 0.7.3)
|
||||||
tilt (>= 1.3.3, < 2.1)
|
tilt (>= 1.3.3, < 2.1)
|
||||||
slim-rails (2.1.5)
|
slim-rails (3.0.0)
|
||||||
|
actionmailer (>= 3.0, < 4.2)
|
||||||
actionpack (>= 3.0, < 4.2)
|
actionpack (>= 3.0, < 4.2)
|
||||||
activesupport (>= 3.0, < 4.2)
|
activesupport (>= 3.0, < 4.2)
|
||||||
railties (>= 3.0, < 4.2)
|
railties (>= 3.0, < 4.2)
|
||||||
slim (~> 2.0)
|
slim (~> 3.0)
|
||||||
slop (3.6.0)
|
slop (3.6.0)
|
||||||
spring (1.2.0)
|
spring (1.2.0)
|
||||||
spring-commands-rspec (1.0.3)
|
spring-commands-rspec (1.0.4)
|
||||||
spring (>= 0.9.1)
|
spring (>= 0.9.1)
|
||||||
sprockets (2.12.3)
|
sprockets (2.12.3)
|
||||||
hike (~> 1.2)
|
hike (~> 1.2)
|
||||||
@@ -394,11 +398,11 @@ GEM
|
|||||||
actionpack (>= 3.0)
|
actionpack (>= 3.0)
|
||||||
activesupport (>= 3.0)
|
activesupport (>= 3.0)
|
||||||
sprockets (>= 2.8, < 4.0)
|
sprockets (>= 2.8, < 4.0)
|
||||||
sshkit (1.5.1)
|
sshkit (1.6.1)
|
||||||
colorize
|
colorize (>= 0.7.0)
|
||||||
net-scp (>= 1.1.2)
|
net-scp (>= 1.1.2)
|
||||||
net-ssh (>= 2.8.0)
|
net-ssh (>= 2.8.0)
|
||||||
temple (0.6.10)
|
temple (0.7.3)
|
||||||
thor (0.19.1)
|
thor (0.19.1)
|
||||||
thread_safe (0.3.4)
|
thread_safe (0.3.4)
|
||||||
tilt (1.4.1)
|
tilt (1.4.1)
|
||||||
@@ -419,7 +423,9 @@ GEM
|
|||||||
binding_of_caller (>= 0.7.2)
|
binding_of_caller (>= 0.7.2)
|
||||||
railties (~> 4.0)
|
railties (~> 4.0)
|
||||||
sprockets-rails (>= 2.0, < 4.0)
|
sprockets-rails (>= 2.0, < 4.0)
|
||||||
websocket-driver (0.4.0)
|
websocket-driver (0.5.1)
|
||||||
|
websocket-extensions (>= 0.1.0)
|
||||||
|
websocket-extensions (0.1.1)
|
||||||
xpath (2.0.0)
|
xpath (2.0.0)
|
||||||
nokogiri (~> 1.3)
|
nokogiri (~> 1.3)
|
||||||
|
|
||||||
@@ -459,6 +465,7 @@ DEPENDENCIES
|
|||||||
letter_opener
|
letter_opener
|
||||||
mini_magick
|
mini_magick
|
||||||
omniauth-facebook
|
omniauth-facebook
|
||||||
|
omniauth-instagram
|
||||||
paperclip
|
paperclip
|
||||||
pry-rails
|
pry-rails
|
||||||
quiet_assets
|
quiet_assets
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
attr = DS.attr
|
attr = DS.attr
|
||||||
App.User= DS.Model.extend
|
App.User= DS.Model.extend
|
||||||
facebook_id: attr('string')
|
|
||||||
email: attr('string')
|
|
||||||
name: attr('string')
|
name: attr('string')
|
||||||
|
uid: attr('string')
|
||||||
|
provider: attr('string')
|
||||||
|
avatar: attr('string')
|
||||||
list: DS.belongsTo('list') # in ember scope not many to many (yet)
|
list: DS.belongsTo('list') # in ember scope not many to many (yet)
|
||||||
join_requests: DS.hasMany('join_request')
|
join_requests: DS.hasMany('join_request')
|
||||||
facebook_image_tag: (->
|
avatar_tag: (->
|
||||||
facebook_id = @get('facebook_id')
|
return unless avatar = @get('avatar')
|
||||||
return '' unless facebook_id
|
|
||||||
url = "http://graph.facebook.com/#{facebook_id}/picture?type=square"
|
|
||||||
name = @get('name')
|
name = @get('name')
|
||||||
new Handlebars.SafeString "<img src=\"#{url}\" alt=\"#{name}\" title=\"#{name}\" class=\"user-facebook-image\">"
|
"<img src='#{avatar}' alt='#{name}' title='#{name}' class='user-avatar-image #{@get('provider')}'>".htmlSafe()
|
||||||
).property('facebook_id', 'name')
|
).property('avatar', 'name')
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ if list.closed_at
|
|||||||
.display-field= view "close-list-button" content=list
|
.display-field= view "close-list-button" content=list
|
||||||
.user-info-container
|
.user-info-container
|
||||||
each user in list.users
|
each user in list.users
|
||||||
=user.facebook_image_tag
|
=user.avatar_tag
|
||||||
if list.sorted_orders
|
if list.sorted_orders
|
||||||
.list-orders-container
|
.list-orders-container
|
||||||
each order in list.sorted_orders
|
each order in list.sorted_orders
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
td.user-info.show-for-large-up
|
td.user-info.show-for-large-up
|
||||||
each user in view.content.users
|
each user in view.content.users
|
||||||
= user.facebook_image_tag
|
= user.avatar_tag
|
||||||
td.status-icons
|
td.status-icons
|
||||||
if view.content.needs_help
|
if view.content.needs_help
|
||||||
span.icon.needs-help
|
span.icon.needs-help
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
td.user-info.show-for-large-up
|
td.user-info.show-for-large-up
|
||||||
each user in view.content.list.users
|
each user in view.content.list.users
|
||||||
= user.facebook_image_tag
|
= user.avatar_tag
|
||||||
td.status-icons
|
td.status-icons
|
||||||
if view.content.active
|
if view.content.active
|
||||||
span.active-order.fa.fa-check.fa-lg
|
span.active-order.fa.fa-check.fa-lg
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ table.table
|
|||||||
tr
|
tr
|
||||||
td
|
td
|
||||||
each user in order.list.users
|
each user in order.list.users
|
||||||
= user.facebook_image_tag
|
= user.avatar_tag
|
||||||
td.status-icons
|
td.status-icons
|
||||||
if order.active
|
if order.active
|
||||||
span.active-order.fa.fa-check.fa-lg
|
span.active-order.fa.fa-check.fa-lg
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ if table.active_list
|
|||||||
/.table-action-row
|
/.table-action-row
|
||||||
a{action "editTable" table}: span.fa.fa-lg.fa-wrench
|
a{action "editTable" table}: span.fa.fa-lg.fa-wrench
|
||||||
each user in table.active_list.users
|
each user in table.active_list.users
|
||||||
= user.facebook_image_tag
|
= user.avatar_tag
|
||||||
if editmodedisabled
|
if editmodedisabled
|
||||||
.table-settings
|
.table-settings
|
||||||
select
|
select
|
||||||
|
|||||||
@@ -1,12 +1,3 @@
|
|||||||
#FB.init appId: '168928633304849'
|
|
||||||
|
|
||||||
#Ember.Application.initializer
|
|
||||||
#name: 'authentication',
|
|
||||||
#initialize: (container, application)->
|
|
||||||
## register the Facebook authenticator so the session can find it
|
|
||||||
#container.register 'authenticators:facebook', App.FacebookAuthenticator
|
|
||||||
#Ember.SimpleAuth.setup(container, application)
|
|
||||||
|
|
||||||
@App = Ember.Application.create
|
@App = Ember.Application.create
|
||||||
LOG_TRANSITIONS: true
|
LOG_TRANSITIONS: true
|
||||||
rootElement: '#ember-app-container'
|
rootElement: '#ember-app-container'
|
||||||
|
|||||||
@@ -1,18 +1,13 @@
|
|||||||
attr = DS.attr
|
attr = DS.attr
|
||||||
App.User = DS.Model.extend
|
App.User = DS.Model.extend
|
||||||
facebook_id: attr('string')
|
|
||||||
email: attr('string')
|
|
||||||
name: attr('string')
|
name: attr('string')
|
||||||
|
uid: attr('string')
|
||||||
|
provider: attr('string')
|
||||||
|
avatar: attr('string')
|
||||||
list: DS.belongsTo('list') # in ember scope not many to many (yet)
|
list: DS.belongsTo('list') # in ember scope not many to many (yet)
|
||||||
join_requests: DS.hasMany('join_request')
|
join_requests: DS.hasMany('join_request')
|
||||||
facebook_image_tag: (->
|
avatar_tag: (->
|
||||||
facebook_id = @get('facebook_id')
|
return unless avatar = @get('avatar')
|
||||||
return '' unless facebook_id
|
|
||||||
<% if Rails.env.test? %>
|
|
||||||
url = ""
|
|
||||||
<% else %>
|
|
||||||
url = "http://graph.facebook.com/#{facebook_id}/picture?type=square"
|
|
||||||
<% end %>
|
|
||||||
name = @get('name')
|
name = @get('name')
|
||||||
new Handlebars.SafeString "<img src=\"#{url}\" alt=\"#{name}\" title=\"#{name}\" class=\"user-facebook-image\">"
|
"<img src='#{avatar}' alt='#{name}' title='#{name}' class='user-avatar-image #{@get('provider')}'>".htmlSafe()
|
||||||
).property('facebook_id', 'name')
|
).property('avatar', 'name')
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
each user in list.users
|
each user in list.users
|
||||||
img.facebook-image src="http://graph.facebook.com/#{unbound user.facebook_id}/picture?type=square" alt="f"
|
user.avatar_tag
|
||||||
.display-row
|
.display-row
|
||||||
.display-label=t 'attributes.list.created_at'
|
.display-label=t 'attributes.list.created_at'
|
||||||
.display-field=time list.created_at
|
.display-field=time list.created_at
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
h2= t 'join_request.existing_user.title'
|
h2= t 'join_request.existing_user.title'
|
||||||
each join_request in join_requests
|
each join_request in join_requests
|
||||||
.join-request-container
|
.join-request-container
|
||||||
= join_request.user.facebook_image_tag
|
= join_request.user.avatar_tag
|
||||||
span.user-email= join_request.user.email
|
span.user-name= join_request.user.name
|
||||||
.right
|
.right
|
||||||
button.join-request-reject{action "rejectRequest" join_request}=t 'join_request.existing_user.reject_request'
|
button.join-request-reject{action "rejectRequest" join_request}=t 'join_request.existing_user.reject_request'
|
||||||
button.join-request-approve{action "approveRequest" join_request}=t 'join_request.existing_user.approve_request'
|
button.join-request-approve{action "approveRequest" join_request}=t 'join_request.existing_user.approve_request'
|
||||||
|
|||||||
@@ -66,7 +66,8 @@
|
|||||||
$primary-color: #008349
|
$primary-color: #008349
|
||||||
// $secondary-color: #e7e7e7;
|
// $secondary-color: #e7e7e7;
|
||||||
$secondary-color: #d7d7d7
|
$secondary-color: #d7d7d7
|
||||||
// $alert-color: #f04124;
|
//$alert-color: #f04124;
|
||||||
|
$alert-color: #ee3e41
|
||||||
// $success-color: #43AC6A;
|
// $success-color: #43AC6A;
|
||||||
// $warning-color: #f08a24;
|
// $warning-color: #f08a24;
|
||||||
// $info-color: #a0d3e8;
|
// $info-color: #a0d3e8;
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
//$qbrown: #634227
|
//$qbrown: #634227
|
||||||
$qbrown: #853d15
|
$qbrown: #853d15
|
||||||
$qbrown-active: lighten($qbrown, 20%)
|
$qbrown-active: lighten($qbrown, 20%)
|
||||||
$green: #7BB459 //Heineken
|
|
||||||
//$wood: image-url('textures/wood001-vertical.jpg')
|
|
||||||
$wood: image-url('textures/theme1.jpg')
|
$wood: image-url('textures/theme1.jpg')
|
||||||
$background-brown: #57351f
|
$background-brown: #57351f
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ header.top-menu
|
|||||||
background-repeat: no-repeat, no-repeat
|
background-repeat: no-repeat, no-repeat
|
||||||
background-position: left bottom, right bottom
|
background-position: left bottom, right bottom
|
||||||
background-image: image-url('theme1/button-bar-left.png'), image-url('theme1/button-bar-right.png')
|
background-image: image-url('theme1/button-bar-left.png'), image-url('theme1/button-bar-right.png')
|
||||||
color: $green
|
color: $primary-color
|
||||||
padding-left: 48px
|
padding-left: 48px
|
||||||
padding-right: 52px
|
padding-right: 52px
|
||||||
.menu-content
|
.menu-content
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
//$qbrown: #634227
|
|
||||||
$qbrown: #853d15
|
|
||||||
$qbrown-active: lighten($qbrown, 20%)
|
|
||||||
$green: #7BB459 //Heineken
|
|
||||||
//$wood: image-url('textures/wood001-vertical.jpg')
|
|
||||||
$wood: image-url('theme1/wall-bg.jpg')
|
$wood: image-url('theme1/wall-bg.jpg')
|
||||||
$background-brown: #57351f
|
|
||||||
$current-color: #fc3
|
$current-color: #fc3
|
||||||
$active-color: #f70
|
$active-color: #f70
|
||||||
$top-menu-height: 76px
|
$top-menu-height: 76px
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
.join-request-container
|
.join-request-container
|
||||||
.user-email
|
.user-name
|
||||||
padding-left: 12px
|
padding-left: 12px
|
||||||
.join-request-reject
|
.join-request-reject
|
||||||
+button($bg: $secondary-color)
|
+button($bg: $secondary-color)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
background-image: image-url('theme1/wall-bg.jpg')
|
background-image: image-url('theme1/wall-bg.jpg')
|
||||||
height: $top-menu-height
|
height: $top-menu-height
|
||||||
.top-menu-bar
|
.top-menu-bar
|
||||||
color: $green
|
color: $primary-color
|
||||||
height: $top-menu-height
|
height: $top-menu-height
|
||||||
background-image: image-url('theme1/button-bar-left.png'), image-url('theme1/button-bar-right.png')
|
background-image: image-url('theme1/button-bar-left.png'), image-url('theme1/button-bar-right.png')
|
||||||
background-color: transparent
|
background-color: transparent
|
||||||
|
|||||||
@@ -59,9 +59,11 @@
|
|||||||
|
|
||||||
// We use these as default colors throughout
|
// We use these as default colors throughout
|
||||||
// $primary-color: #008CBA;
|
// $primary-color: #008CBA;
|
||||||
$primary-color: green
|
// $primary-color: green
|
||||||
|
$primary-color: #008349
|
||||||
// $secondary-color: #e7e7e7;
|
// $secondary-color: #e7e7e7;
|
||||||
$secondary-color: #d7d7d7
|
$secondary-color: #d7d7d7
|
||||||
|
$alert-color: #ee3e41
|
||||||
// $alert-color: #f04124;
|
// $alert-color: #f04124;
|
||||||
// $success-color: #43AC6A;
|
// $success-color: #43AC6A;
|
||||||
// $warning-color: #f08a24;
|
// $warning-color: #f08a24;
|
||||||
|
|||||||
@@ -7,22 +7,24 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def facebook
|
def facebook
|
||||||
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
|
@user = User.find_for_oauth(request.env["omniauth.auth"], current_user)
|
||||||
|
|
||||||
if @user.persisted?
|
if @user.persisted?
|
||||||
flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook"
|
flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => @user.provider.to_s.capitalize
|
||||||
sign_in @user
|
sign_in @user
|
||||||
#redirect_to user_root_path, :event => :authentication, :current_user => @user # infinite loop
|
#redirect_to user_root_path, :event => :authentication, :current_user => @user # infinite loop
|
||||||
redirect_to user_obtain_token_path, :event => :authentication, :current_user => @user
|
redirect_to user_obtain_token_path, :event => :authentication, :current_user => @user
|
||||||
else
|
else
|
||||||
session["devise.facebook_data"] = request.env["omniauth.auth"]
|
session["devise.facebook_data"] = request.env["omniauth.auth"]
|
||||||
Rails.logger.error("Failed to persist user: #{@user.errors.full_messages.join(', ')}")
|
Rails.logger.error("Failed to persist user: #{@user.errors.full_messages.join(', ')}")
|
||||||
#TAG: facebook
|
|
||||||
# redirect_to new_user_registration_url
|
|
||||||
redirect_to '/'
|
redirect_to '/'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def instagram
|
||||||
|
facebook # same same
|
||||||
|
end
|
||||||
|
|
||||||
def failure(env = {})
|
def failure(env = {})
|
||||||
#binding.pry
|
#binding.pry
|
||||||
show_404
|
show_404
|
||||||
|
|||||||
+23
-4
@@ -13,7 +13,7 @@ class User
|
|||||||
property :oauth_expires_at
|
property :oauth_expires_at
|
||||||
property :auth_data
|
property :auth_data
|
||||||
|
|
||||||
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :omniauthable, :omniauth_providers => [:facebook] #, :token_authenticatable , :registerable
|
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :omniauthable, :omniauth_providers => [:facebook, :instagram] #, :token_authenticatable , :registerable
|
||||||
|
|
||||||
property :authentication_token
|
property :authentication_token
|
||||||
|
|
||||||
@@ -28,10 +28,11 @@ class User
|
|||||||
|
|
||||||
view :by_authentication_token, key: :authentication_token
|
view :by_authentication_token, key: :authentication_token
|
||||||
view :by_email, key: :email
|
view :by_email, key: :email
|
||||||
view :by_facebook, key: [:provider, :uid]
|
view :by_facebook, key: [:provider, :uid] #DEPRICATE on successful change to by_provider
|
||||||
|
view :by_provider, key: [:provider, :uid]
|
||||||
|
|
||||||
def self.find_for_facebook_oauth(auth_data, user)
|
def self.find_for_oauth(auth_data, user)
|
||||||
user = database.view(self.by_facebook(key: [auth_data.provider, auth_data.uid], limit: 1)).first
|
user = database.view(self.by_provider(key: [auth_data.provider, auth_data.uid], limit: 1)).first
|
||||||
|
|
||||||
user || create(
|
user || create(
|
||||||
provider: auth_data.provider,
|
provider: auth_data.provider,
|
||||||
@@ -49,6 +50,24 @@ class User
|
|||||||
uid
|
uid
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def provider_info
|
||||||
|
case provider.to_sym
|
||||||
|
when :facebook then {}
|
||||||
|
when :instagram
|
||||||
|
uri = URI.parse("https://api.instagram.com/v1/users/#{uid}?access_token=#{auth_data['credentials']['token']}")
|
||||||
|
JSON.parse(Net::HTTP.get(uri)) rescue {ok: false, error: 'cannot_parse_response'}
|
||||||
|
else
|
||||||
|
{ok: false, error: 'provider_unknown'}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def avatar
|
||||||
|
case provider.to_sym
|
||||||
|
when :facebook then "http://graph.facebook.com/#{uid}/picture?type=square"
|
||||||
|
when :instagram then auth_data['info'].try(:[], 'image')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def self.from_omniauth(auth)
|
def self.from_omniauth(auth)
|
||||||
#binding.pry
|
#binding.pry
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
class SupplierUserSerializer < Qwaiter::Serializer
|
class SupplierUserSerializer < Qwaiter::Serializer
|
||||||
self.root = :user
|
self.root = :user
|
||||||
attributes :email, :facebook_id, :name
|
attributes :email, :provider, :uid, :name, :avatar
|
||||||
|
|
||||||
def name
|
def name
|
||||||
object.supplier_name
|
object.supplier_name
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
class UserUserSerializer < Qwaiter::Serializer
|
class UserUserSerializer < Qwaiter::Serializer
|
||||||
self.root = :user
|
self.root = :user
|
||||||
attributes :email, :facebook_id, :name
|
attributes :email, :provider, :uid, :name, :avatar
|
||||||
|
|
||||||
def name
|
def name
|
||||||
object.friends_name
|
object.friends_name
|
||||||
|
|||||||
@@ -239,9 +239,11 @@ Devise.setup do |config|
|
|||||||
# scope: 'email,user_birthday,publish_stream'
|
# scope: 'email,user_birthday,publish_stream'
|
||||||
config.omniauth :facebook, "653729178057509", "d4cea86f70803f1b75ed03c506a4d78e",
|
config.omniauth :facebook, "653729178057509", "d4cea86f70803f1b75ed03c506a4d78e",
|
||||||
scope: 'email,user_birthday,publish_stream'
|
scope: 'email,user_birthday,publish_stream'
|
||||||
|
config.omniauth :instagram, "cd7bdfbee825499b94fb3783d1bc143b", "6b4f9ecf251c462993a696eebc0189be"
|
||||||
else
|
else
|
||||||
config.omniauth :facebook, "168928633304849", "22bc53e1a390c1e62d004195c55fe336",
|
config.omniauth :facebook, "168928633304849", "22bc53e1a390c1e62d004195c55fe336",
|
||||||
scope: 'email,user_birthday,publish_stream'
|
scope: 'email,user_birthday,publish_stream'
|
||||||
|
config.omniauth :instagram, "81c78b969a7046d6b6b5b5fe3f30929c", "3697c16762ad4f1ca088e829efbaddde"
|
||||||
end
|
end
|
||||||
|
|
||||||
# ==> Warden configuration
|
# ==> Warden configuration
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ step "the user should be redirected to the archived list path" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
step 'there is another user' do
|
step 'there is another user' do
|
||||||
@other_user ||= create :user
|
@other_user ||= create :user, :other_auth
|
||||||
end
|
end
|
||||||
|
|
||||||
step "the other user clicks the join table button" do
|
step "the other user clicks the join table button" do
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ step "the original user should see a join request message" do
|
|||||||
request_title = page.evaluate_script(%|t('join_request.existing_user.title')|)
|
request_title = page.evaluate_script(%|t('join_request.existing_user.title')|)
|
||||||
request_title.should be_present
|
request_title.should be_present
|
||||||
page.should have_content request_title
|
page.should have_content request_title
|
||||||
page.should have_content @other_user.email
|
page.should have_content "UOther" # spec/factories/user
|
||||||
end
|
end
|
||||||
|
|
||||||
step "the original user should not see the join request anymore" do
|
step "the original user should not see the join request anymore" do
|
||||||
|
|||||||
@@ -2,5 +2,19 @@ FactoryGirl.define do
|
|||||||
factory :user do
|
factory :user do
|
||||||
sequence( :email ){|i| "test#{i}@example.com" }
|
sequence( :email ){|i| "test#{i}@example.com" }
|
||||||
password "secret"
|
password "secret"
|
||||||
|
|
||||||
|
trait :other_auth do
|
||||||
|
auth_data( {
|
||||||
|
'info' => {
|
||||||
|
'nickname' => "UOther",
|
||||||
|
"name" => "USR Other",
|
||||||
|
"first_name" => "Usother"
|
||||||
|
},
|
||||||
|
"credentials" => {
|
||||||
|
"token" => "fbAuthToken234",
|
||||||
|
'expires' => false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -56,6 +56,10 @@ class TestCounter < InMemoryQCounter
|
|||||||
#end
|
#end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# No external images in test suite... slow....
|
||||||
|
User.send(:define_method, :avatar, ->{})
|
||||||
|
|
||||||
|
|
||||||
if defined?(Couchbase)
|
if defined?(Couchbase)
|
||||||
class Couchbase::View
|
class Couchbase::View
|
||||||
alias :old_initialize :initialize
|
alias :old_initialize :initialize
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ User
|
|||||||
- test met veel producten
|
- test met veel producten
|
||||||
- product variants
|
- product variants
|
||||||
- remove active orders on list close
|
- remove active orders on list close
|
||||||
|
- Explanation page before opening facebook login
|
||||||
|
- Add instagram login
|
||||||
|
|
||||||
Bugs
|
Bugs
|
||||||
----
|
----
|
||||||
@@ -28,8 +30,9 @@ Bugs
|
|||||||
General
|
General
|
||||||
-------
|
-------
|
||||||
|
|
||||||
- split off faye server
|
- split off faye server (really low)
|
||||||
- split off counter server
|
- split off counter server (really low)
|
||||||
|
- Loading pages
|
||||||
|
|
||||||
Post release
|
Post release
|
||||||
============
|
============
|
||||||
|
|||||||
Reference in New Issue
Block a user