gallery 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/Rakefile +34 -0
- data/app/assets/javascripts/gallery/admin/admin.js +2 -0
- data/app/assets/javascripts/gallery/admin/albums.js +2 -0
- data/app/assets/javascripts/gallery/albums.js +2 -0
- data/app/assets/javascripts/gallery/application.js +13 -0
- data/app/assets/javascripts/gallery/gallery.js.coffee +229 -0
- data/app/assets/javascripts/gallery/images_loaded.js +6 -0
- data/app/assets/javascripts/gallery/omniauth_callbacks.js +2 -0
- data/app/assets/javascripts/gallery/photos.js +2 -0
- data/app/assets/javascripts/gallery/spinner.js +1 -0
- data/app/assets/stylesheets/gallery/admin/admin.css +4 -0
- data/app/assets/stylesheets/gallery/admin/albums.css +4 -0
- data/app/assets/stylesheets/gallery/albums.css +4 -0
- data/app/assets/stylesheets/gallery/application.css +13 -0
- data/app/assets/stylesheets/gallery/omniauth_callbacks.css +4 -0
- data/app/assets/stylesheets/gallery/photos.css +4 -0
- data/app/assets/stylesheets/gallery/style.css.scss +193 -0
- data/app/controllers/gallery/admin/admin_controller.rb +14 -0
- data/app/controllers/gallery/admin/albums_controller.rb +36 -0
- data/app/controllers/gallery/albums_controller.rb +9 -0
- data/app/controllers/gallery/application_controller.rb +4 -0
- data/app/controllers/gallery/omniauth_callbacks_controller.rb +27 -0
- data/app/controllers/gallery/photos_controller.rb +23 -0
- data/app/helpers/gallery/admin/admin_helper.rb +4 -0
- data/app/helpers/gallery/admin/albums_helper.rb +4 -0
- data/app/helpers/gallery/albums_helper.rb +4 -0
- data/app/helpers/gallery/application_helper.rb +4 -0
- data/app/helpers/gallery/omniauth_callbacks_helper.rb +4 -0
- data/app/helpers/gallery/photos_helper.rb +4 -0
- data/app/models/gallery/album.rb +66 -0
- data/app/models/gallery/identity.rb +43 -0
- data/app/models/gallery/photo.rb +14 -0
- data/app/views/gallery/admin/admin/index.html.erb +46 -0
- data/app/views/gallery/admin/albums/show.html.erb +14 -0
- data/app/views/gallery/albums/_admin_album_element.html.erb +18 -0
- data/app/views/gallery/albums/_album_element.html.erb +15 -0
- data/app/views/gallery/albums/index.html.erb +9 -0
- data/config/initializers/omniauth.rb +18 -0
- data/config/routes.rb +22 -0
- data/db/migrate/20130806170912_create_gallery_identities.rb +14 -0
- data/db/migrate/20130806212451_add_token_to_identity.rb +5 -0
- data/db/migrate/20130806213308_create_gallery_albums.rb +19 -0
- data/db/migrate/20130806214102_create_gallery_photos.rb +18 -0
- data/db/migrate/20130806221405_add_public_to_album.rb +5 -0
- data/db/migrate/20130806221438_add_public_to_photo.rb +5 -0
- data/db/migrate/20130807113616_add_thumbnail_to_photo.rb +6 -0
- data/lib/gallery.rb +4 -0
- data/lib/gallery/engine.rb +9 -0
- data/lib/gallery/version.rb +3 -0
- data/lib/tasks/gallery_tasks.rake +4 -0
- data/test/controllers/gallery/admin/admin_controller_test.rb +9 -0
- data/test/controllers/gallery/admin/albums_controller_test.rb +9 -0
- data/test/controllers/gallery/albums_controller_test.rb +9 -0
- data/test/controllers/gallery/omniauth_callbacks_controller_test.rb +9 -0
- data/test/controllers/gallery/photos_controller_test.rb +9 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/fixtures/gallery/albums.yml +23 -0
- data/test/fixtures/gallery/identities.yml +13 -0
- data/test/fixtures/gallery/photos.yml +21 -0
- data/test/gallery_test.rb +7 -0
- data/test/helpers/gallery/admin/admin_helper_test.rb +6 -0
- data/test/helpers/gallery/admin/albums_helper_test.rb +6 -0
- data/test/helpers/gallery/albums_helper_test.rb +6 -0
- data/test/helpers/gallery/omniauth_callbacks_helper_test.rb +6 -0
- data/test/helpers/gallery/photos_helper_test.rb +6 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/models/gallery/album_test.rb +9 -0
- data/test/models/gallery/identity_test.rb +9 -0
- data/test/models/gallery/photo_test.rb +9 -0
- data/test/test_helper.rb +15 -0
- metadata +324 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
require_dependency "gallery/application_controller"
|
2
|
+
|
3
|
+
module Gallery
|
4
|
+
class Admin::AdminController < ApplicationController
|
5
|
+
before_filter :login_required
|
6
|
+
def index
|
7
|
+
@identities = Identity.all
|
8
|
+
@public_albums = Album.published
|
9
|
+
@private_albums = Album.private
|
10
|
+
configpath = Rails.root.join('config', 'gallery_api_keys.yml')
|
11
|
+
@providers = YAML.load(ERB.new(File.new(configpath).read).result).keys
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require_dependency "gallery/application_controller"
|
2
|
+
|
3
|
+
module Gallery
|
4
|
+
class Admin::AlbumsController < ApplicationController
|
5
|
+
|
6
|
+
before_filter :login_required
|
7
|
+
|
8
|
+
def fetch_albums
|
9
|
+
Identity.all.each(&:fetch_albums)
|
10
|
+
redirect_to :back, :notice => "Albums fetched"
|
11
|
+
end
|
12
|
+
|
13
|
+
def set_public
|
14
|
+
album = Album.find(params[:album_id])
|
15
|
+
album.update_attributes(:public => true)
|
16
|
+
redirect_to :back, :notice => "Album #{album.name} set public"
|
17
|
+
end
|
18
|
+
|
19
|
+
def set_private
|
20
|
+
album = Album.find(params[:album_id])
|
21
|
+
album.update_attributes(:public => false)
|
22
|
+
redirect_to :back, :notice => "Album #{album.name} set private"
|
23
|
+
end
|
24
|
+
|
25
|
+
def fetch_photos
|
26
|
+
album = Album.find(params[:album_id])
|
27
|
+
album.fetch_photos
|
28
|
+
redirect_to :back, :notice => "Photos fetched"
|
29
|
+
end
|
30
|
+
|
31
|
+
def show
|
32
|
+
@album = Album.find(params[:id])
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_dependency "gallery/application_controller"
|
2
|
+
|
3
|
+
module Gallery
|
4
|
+
class OmniauthCallbacksController < ApplicationController
|
5
|
+
def callback
|
6
|
+
@omniauth_hash = request.env["omniauth.auth"]
|
7
|
+
@omniauth_hash.provider = 'google' if @omniauth_hash.provider == "google_oauth2"
|
8
|
+
|
9
|
+
identity = Identity.find_by_uid_and_provider(@omniauth_hash.uid, @omniauth_hash.provider)
|
10
|
+
identity.update_attributes({:token => @omniauth_hash.credentials.token}) if identity
|
11
|
+
identity = Identity.create parse_omniauth_hash_to_identity(@omniauth_hash) unless identity
|
12
|
+
|
13
|
+
redirect_to admin_path
|
14
|
+
end
|
15
|
+
|
16
|
+
def parse_omniauth_hash_to_identity(omniauth_hash)
|
17
|
+
case omniauth_hash.provider
|
18
|
+
when 'facebook'
|
19
|
+
return { :uid => @omniauth_hash.uid, :provider => @omniauth_hash.provider, :token => @omniauth_hash.credentials.token, :name => @omniauth_hash.info.name, :link => @omniauth_hash.extra.raw_info.link }
|
20
|
+
when 'eyeem'
|
21
|
+
return { :uid => @omniauth_hash.uid, :provider => @omniauth_hash.provider, :token => @omniauth_hash.credentials.token, :name => @omniauth_hash.info.name, :link => @omniauth_hash.extra.raw_info.user.webUrl }
|
22
|
+
when 'google'
|
23
|
+
return { :uid => @omniauth_hash.uid, :provider => @omniauth_hash.provider, :token => @omniauth_hash.credentials.token, :name => @omniauth_hash.info.name, :link => @omniauth_hash.extra.raw_info.link }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require_dependency "gallery/application_controller"
|
2
|
+
|
3
|
+
module Gallery
|
4
|
+
class PhotosController < ApplicationController
|
5
|
+
respond_to :json
|
6
|
+
|
7
|
+
if respond_to?('caches_action')
|
8
|
+
caches_action :index
|
9
|
+
end
|
10
|
+
|
11
|
+
def index
|
12
|
+
album = Album.find_by_id(params[:album_id])
|
13
|
+
album = Album.find_by_uid_and_provider(params[:album_id].split('-').first, params[:album_id].split('-').last) unless album
|
14
|
+
photos = album.photos
|
15
|
+
if album.public
|
16
|
+
respond_with photos, :only => [:id, :album_id, :source, :name, :aspect_ratio, :thumbnail]
|
17
|
+
else
|
18
|
+
respond_with []
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Gallery
|
2
|
+
class Album < ActiveRecord::Base
|
3
|
+
validates :uid, :uniqueness => { :scope => :provider }
|
4
|
+
|
5
|
+
has_many :photos, :dependent => :destroy
|
6
|
+
belongs_to :identity, :touch => true
|
7
|
+
|
8
|
+
scope :published, -> { where(public: true) }
|
9
|
+
scope :private, -> {where(public: false)}
|
10
|
+
default_scope order('updated_at DESC')
|
11
|
+
|
12
|
+
def fetch_photos
|
13
|
+
case provider.to_s
|
14
|
+
when 'eyeem'
|
15
|
+
|
16
|
+
client = OAuth2::Client.new('5kkCFgioQ2UgtZwTnpMFPH4FYCYWpkkq', 'RfdwC60OGDQOCaPssQIqiAbG5Y5HWzwG', :site => 'https://www.eyeem.com', :parse_json => true)
|
17
|
+
access_token = OAuth2::AccessToken.new(client, identity.token, :site => 'https://eyeem.com/')
|
18
|
+
response = JSON.parse(access_token.get('/api/v2/users/me/photos?detailed=1').body)
|
19
|
+
|
20
|
+
raw_photos = response['photos']['items']
|
21
|
+
|
22
|
+
processed_photos = []
|
23
|
+
|
24
|
+
Album.transaction do
|
25
|
+
processed_photos = raw_photos.map { |photo| photos.create :uid => photo['id'], :provider => :eyeem, :thumbs => {}, :source => photo['photoUrl'], :name => photo['id'], :url => photo['webUrl'], :aspect_ratio => photo['width']/photo['height'].to_f, :lat => (photo['latitude'] == '' ? nil : photo['latitude']), :long => (photo['longitude'] == '' ? nil : photo['longitude']), :taken_at => DateTime.parse(photo['updated']), :like_count => photo['totalLikes'], :comment_count => photo['totalComments'], :filter_name => (photo.has_key?('filter') ? photo['filter'] : nil) }
|
26
|
+
end
|
27
|
+
|
28
|
+
# fetch more if we have created them all and not empty
|
29
|
+
while !processed_photos.map(&:persisted?).any?(&:blank?) and processed_photos.length > 0 do
|
30
|
+
limit = response['photos']['limit']
|
31
|
+
offset = response['photos']['offset'] + limit
|
32
|
+
response = JSON.parse(access_token.get("/api/v2/users/me/photos?detailed=1&limit=#{limit}&offset=#{offset}").body)
|
33
|
+
raw_photos = response['photos']['items']
|
34
|
+
|
35
|
+
Album.transaction do
|
36
|
+
processed_photos = raw_photos.map { |photo| photos.create :uid => photo['id'], :provider => :eyeem, :thumbs => {}, :source => photo['photoUrl'], :name => photo['id'], :url => photo['webUrl'], :aspect_ratio => photo['width']/photo['height'].to_f, :lat => (photo['latitude'] == '' ? nil : photo['latitude']), :long => (photo['longitude'] == '' ? nil : photo['longitude']), :taken_at => DateTime.parse(photo['updated']), :like_count => photo['totalLikes'], :comment_count => photo['totalComments'], :filter_name => (photo.has_key?('filter') ? photo['filter'] : nil) }
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
when 'google'
|
43
|
+
client = OAuth2::Client.new('1040704984149.apps.googleusercontent.com', 'RHObwIrckTzGtwLA6aRY-vLB', :site => 'https://picasaweb.google.com/data/')
|
44
|
+
access_token = OAuth2::AccessToken.new(client, self.identity.token, :site => 'https://picasaweb.google.com/')
|
45
|
+
album_response = JSON.parse(access_token.get("/data/feed/api/user/default/albumid/#{uid}?alt=json").body)
|
46
|
+
|
47
|
+
return unless album_response['feed'].has_key? 'entry'
|
48
|
+
|
49
|
+
raw_photos = album_response['feed']['entry']
|
50
|
+
|
51
|
+
Album.transaction do
|
52
|
+
processed_photos = raw_photos.map { |photo| photos.create :uid => photo['gphoto$id']['$t'], :provider => :google, :thumbnail => photo['content']['src'].gsub(/\/[^\/]*\z/, '/w512-h512-no/photo'), :url => photo['link'][1]['href'], :name => photo['title']['$t'], :source => photo['content']['src'].gsub(/\/[^\/]*\z/, '/w2048-h2048-no/photo'), :aspect_ratio => photo['gphoto$width']['$t'].to_f/photo['gphoto$height']['$t'].to_f}
|
53
|
+
|
54
|
+
# only fetch more if all photos were successfully created and we have equal total to per page
|
55
|
+
# TODO: actually do this, google right now returns 1000, plenty
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def cover_photo
|
62
|
+
photos.first
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Gallery
|
2
|
+
class Identity < ActiveRecord::Base
|
3
|
+
has_many :albums
|
4
|
+
|
5
|
+
def fetch_albums(force_fetch = false)
|
6
|
+
case provider
|
7
|
+
when 'eyeem'
|
8
|
+
|
9
|
+
album = albums.find_by_provider_and_uid( :eyeem, 'eyeem_identifier')
|
10
|
+
album = albums.create :provider => :eyeem, :uid => 'eyeem_identifier', :name => "My Eyeem Photos" unless album
|
11
|
+
|
12
|
+
album.fetch_photos
|
13
|
+
|
14
|
+
when 'google'
|
15
|
+
|
16
|
+
# Load api keys
|
17
|
+
|
18
|
+
configpath = Rails.root.join('config', 'gallery_api_keys.yml')
|
19
|
+
providers = {}
|
20
|
+
if File.exists?(configpath)
|
21
|
+
|
22
|
+
providers = YAML.load(ERB.new(File.new(configpath).read).result)
|
23
|
+
end
|
24
|
+
|
25
|
+
return unless providers["google_oauth2"]
|
26
|
+
|
27
|
+
client = OAuth2::Client.new(providers["google_oauth2"][0], providers["google_oauth2"][1], :site => 'https://picasaweb.google.com/data/')
|
28
|
+
access_token = OAuth2::AccessToken.new(client, self.token, :site => 'https://picasaweb.google.com/')
|
29
|
+
album_response = JSON.parse(access_token.get('/data/feed/api/user/default?alt=json').body)
|
30
|
+
# albums
|
31
|
+
raw_albums = album_response['feed']['entry']
|
32
|
+
|
33
|
+
raw_albums.each do |album|
|
34
|
+
processed_album = albums.where({ :uid => album['gphoto$id']['$t'], :provider => 'google', :name => album['title']['$t'], :description => album['summary']['$t'], :url => album['link'][1]['href']}).first_or_create
|
35
|
+
|
36
|
+
# only fetch if we are forced, or if updated_at is old enough
|
37
|
+
processed_album.fetch_photos if force_fetch or processed_album.updated_at < album['updated']['$t']
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Gallery
|
2
|
+
class Photo < ActiveRecord::Base
|
3
|
+
|
4
|
+
validates :uid, :uniqueness => { :scope => :provider }
|
5
|
+
validates :source, :presence => true
|
6
|
+
validates :url, :presence => true
|
7
|
+
validates :uid, :presence => true
|
8
|
+
validates :provider, :presence => true
|
9
|
+
validates :thumbnail, :presence => true
|
10
|
+
validates :aspect_ratio, :presence => true
|
11
|
+
|
12
|
+
belongs_to :album, :counter_cache => true, :touch => true
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
<% if !@identities.blank? %>
|
4
|
+
<h3>All your accounts</h3>
|
5
|
+
<% for identity in @identities %>
|
6
|
+
<li>
|
7
|
+
<%= link_to identity.name, identity.link %>
|
8
|
+
</li>
|
9
|
+
<% end %>
|
10
|
+
<%= link_to "Fetch Albums", admin_fetch_albums_path, :method => :post %>
|
11
|
+
<% else %>
|
12
|
+
<h3>No Accounts connected</h3>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<% if !@providers.blank? %>
|
16
|
+
<h3>Connect other accounts</h3>
|
17
|
+
<p>
|
18
|
+
I haven't really figured out how to get omniauth routes mounted inside an engine, so for now, you got to initiate the oauth process manually. Below you will see a list of providers currently initialized from your config/gallery_api_keys.yml. Visit "/#{mount_point}/auth/#{provider_name}". It should then show up here.
|
19
|
+
</p>
|
20
|
+
<% for provider in @providers %>
|
21
|
+
<li><%= provider %></li>
|
22
|
+
<% end %>
|
23
|
+
<% else %>
|
24
|
+
|
25
|
+
<% end %>
|
26
|
+
|
27
|
+
|
28
|
+
<h4>Published Albums</h4>
|
29
|
+
|
30
|
+
<% if !@public_albums.blank? %>
|
31
|
+
<% for album in @public_albums %>
|
32
|
+
<%= render "gallery/albums/admin_album_element", album: album %>
|
33
|
+
<% end %>
|
34
|
+
<% else %>
|
35
|
+
<p>You have no published albums</p>
|
36
|
+
<% end %>
|
37
|
+
|
38
|
+
<h4>Published Albums</h4>
|
39
|
+
|
40
|
+
<% if !@private_albums.blank? %>
|
41
|
+
<% for album in @private_albums %>
|
42
|
+
<%= render "gallery/albums/admin_album_element", album: album %>
|
43
|
+
<% end %>
|
44
|
+
<% else %>
|
45
|
+
<p>You have no private albums</p>
|
46
|
+
<% end %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<h3><%= @album.name %></h3>
|
2
|
+
<p>
|
3
|
+
ID: <%= @album.id %> <br>
|
4
|
+
UID: <%= @album.uid %> <br>
|
5
|
+
Provider: <%= @album.provider %>
|
6
|
+
</p>
|
7
|
+
|
8
|
+
<% if !@album.photos.blank? %>
|
9
|
+
<% for photo in @album.photos %>
|
10
|
+
<img src="<%= photo.thumbnail %>" alt=" ">
|
11
|
+
<% end %>
|
12
|
+
<% else %>
|
13
|
+
|
14
|
+
<% end %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div class="gallery-album-admin">
|
2
|
+
<img src="<%= album.cover_photo.try(:thumbnail) %>" alt="">
|
3
|
+
<h3><%= album.name %></h3>
|
4
|
+
<p>
|
5
|
+
ID: <%= album.id %> <br>
|
6
|
+
UID: <%= album.uid %> <br>
|
7
|
+
Provider: <%= album.provider %>
|
8
|
+
</p>
|
9
|
+
<p>
|
10
|
+
<%= link_to (album.public ? "Make Album private" : "Make Album public"), (album.public ? admin_album_private_path(album) : admin_album_public_path(album)), :method => :post %>
|
11
|
+
|
12
|
+
<br>
|
13
|
+
<%= link_to "Fetch Photos", admin_album_fetch_photos_path(album), :method => :post %>
|
14
|
+
<br>
|
15
|
+
<%= link_to "Go to Album", admin_album_path(album) %>
|
16
|
+
</p>
|
17
|
+
|
18
|
+
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="gallery-album">
|
2
|
+
<h3><%= album.name %></h3>
|
3
|
+
<div class="gallery-album-photos">
|
4
|
+
<div class="gallery-album-photos-canvas" tabindex="0">
|
5
|
+
<% if !album.photos.blank? %>
|
6
|
+
<% for photo in album.photos %>
|
7
|
+
<img data-src="<%= photo.thumbnail %>" data-big-src="<%= photo.source %>" loaded=false class='' alt="">
|
8
|
+
<% end %>
|
9
|
+
<% else %>
|
10
|
+
|
11
|
+
<% end %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
</div>
|
15
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
configpath = Rails.root.join('config', 'gallery_api_keys.yml')
|
2
|
+
providers = {}
|
3
|
+
if File.exists?(configpath)
|
4
|
+
|
5
|
+
providers = YAML.load(ERB.new(File.new(configpath).read).result)
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
10
|
+
|
11
|
+
configure do |config|
|
12
|
+
config.path_prefix = '/gallery/auth'
|
13
|
+
end
|
14
|
+
|
15
|
+
providers.each do |k,v|
|
16
|
+
provider *(v.unshift(k))
|
17
|
+
end
|
18
|
+
end
|
data/config/routes.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Gallery::Engine.routes.draw do
|
2
|
+
namespace :admin do
|
3
|
+
post 'fetch_albums' => "albums#fetch_albums"
|
4
|
+
resources :albums do
|
5
|
+
post 'public' => "albums#set_public"
|
6
|
+
post 'private' => "albums#set_private"
|
7
|
+
post 'fetch_photos' => "albums#fetch_photos"
|
8
|
+
resources :photos do
|
9
|
+
|
10
|
+
end
|
11
|
+
end
|
12
|
+
get '' => "admin#index"
|
13
|
+
end
|
14
|
+
|
15
|
+
resources :albums do
|
16
|
+
resources :photos
|
17
|
+
end
|
18
|
+
|
19
|
+
get "auth/:provider/callback" => "omniauth_callbacks#callback"
|
20
|
+
|
21
|
+
get '' => "albums#index", :as => :gallery_root
|
22
|
+
end
|