devise_russian 0.0.13 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,6 +18,23 @@ devise_russian
18
18
 
19
19
  Обратите внимание на метод providers модели Authentication: https://github.com/vav/devise_russian/blob/master/app/models/authentication.rb
20
20
 
21
+ В случае необходимости задать свой список провайдеров:
22
+
23
+ app/models/authentication_decorator.rb:
24
+
25
+ Authentication.class_eval do
26
+ def self.providers
27
+ [
28
+ ['facebook', 'Facebook'],
29
+ ['vkontakte', 'Vkontakte'],
30
+ ['odnoklassniki', 'Odnoklassniki'],
31
+ ['twitter', 'Twitter'],
32
+ ['github', 'Github'],
33
+ ['google_oauth2', 'Google']
34
+ ]
35
+ end
36
+ end
37
+
21
38
  В config/initializers/omniauth.rb:
22
39
 
23
40
  Rails.application.config.middleware.use OmniAuth::Builder do
@@ -30,6 +47,8 @@ devise_russian
30
47
  provider :odnoklassniki, "2222222", "HGF33GH3F3HGF3HGF3SD",
31
48
  :public_key => "DFKSFDKJHJHFJSDSADSD", :provider_ignores_state => true
32
49
 
50
+ ...
51
+
33
52
  Миграции:
34
53
 
35
54
  # Пользователи
@@ -97,26 +116,14 @@ devise_russian
97
116
 
98
117
  Прописываем роуты:
99
118
 
100
- devise_for :users,
101
- :path => "auth",
102
- :path_names => {
103
- :sign_in => "login",
104
- :sign_out => "logout",
105
- :sign_up => "register"
106
- },
107
- :controllers => {
108
- :registrations => "registrations"
109
- }
119
+ config/routes.rb:
110
120
 
111
- # Авторизации пользователя
112
- resources :authentications, :only => [:index, :create, :destroy]
113
-
114
- # Вход через социальные сети
115
- match "/auth/:provider/callback", :to => "authentications#create"
116
- match "/auth/failure", :to => "authentications#failure"
121
+ mount DeviseRussian::Engine => "/auth", :as => "devise_russian"
117
122
 
118
123
  Подключаем девайс и русский девайс в модели:
119
124
 
125
+ app/models/user.rb:
126
+
120
127
  # Devise
121
128
  devise :database_authenticatable,
122
129
  :confirmable,
@@ -129,6 +136,25 @@ devise_russian
129
136
  # Russian Devise
130
137
  omniauthable
131
138
 
139
+ class << self
140
+ ...
141
+ # Вывод списка провайдеров на странице входа
142
+ def omniauth_enabled
143
+ false
144
+ end
145
+ ...
146
+ end
147
+
148
+ Прописывем название и адрес сайта для подвала писем от Devise:
149
+
150
+ ru:
151
+ devise_russian:
152
+ my_authentications: Мои авторизации
153
+ authentication_not_found: Авторизация не найдена
154
+ mailer:
155
+ site_name: Мега-портал
156
+ site_url: "http://www.portal.ru"
157
+
132
158
  Ссылки на вход и регистрацию:
133
159
 
134
160
  <ul>
@@ -136,6 +162,4 @@ devise_russian
136
162
  <li><a href="/auth/register">Регистрация</a></li>
137
163
  </ul>
138
164
 
139
- Ну и так двлее. Настраивайте под себя!
140
-
141
- ## P.S.: Поддержку не оказываю, включайте голову.
165
+ Ну и так далее. Настраивайте под себя!
@@ -3,7 +3,7 @@ class AuthenticationsController < DeviseController
3
3
  before_filter :authenticate_user!, :except => [:create, :failure]
4
4
 
5
5
  def index
6
- @meta_title = "Мои авторизации"
6
+ @meta_title = I18n.t("devise_russian.my_authentications")
7
7
  @authentications = current_user.authentications
8
8
  end
9
9
 
@@ -38,13 +38,13 @@ class AuthenticationsController < DeviseController
38
38
  flash[:notice] = I18n.t("devise.sessions.signed_out")
39
39
  redirect_to authentications_url
40
40
  else
41
- flash[:error] = "Авторизация не найдена"
41
+ flash[:error] = I18n.t("devise_russian.authentication_not_found")
42
42
  redirect_to "/"
43
43
  end
44
44
  end
45
45
 
46
46
  def failure
47
- redirect_to new_user_session_url #, :flash => {:error => "Не могу вас авторизовать: #{params[:message]}"}
47
+ redirect_to devise_russian.new_user_session_url
48
48
  end
49
49
 
50
50
  def devise_mapping
@@ -1,35 +1,22 @@
1
1
  # coding: utf-8
2
2
  class Authentication < ActiveRecord::Base
3
- attr_accessible :user_id, :provider, :uid, :name, :email
4
3
  validates_presence_of :provider, :uid
4
+ attr_accessible :user_id, :provider, :uid, :name, :email
5
+
5
6
  belongs_to :user
6
7
 
7
8
  xss_terminate
8
9
 
9
- # PROVIDERS = [
10
- # ['facebook', 'Facebook'],
11
- # ['twitter', 'Twitter'],
12
- # ['vkontakte','Vkontakte'],
13
- # ['mailru','Mail.ru'],
14
- # ['open_id','OpenID'],
15
- # ['flickr','Flickr'],
16
- # ['odnoklassniki','Odnoklassniki'],
17
- # ['you_tube','YouTube']
18
- # ]
19
-
20
- def self.providers
21
- [
22
- ['facebook', 'Facebook'],
23
- ['vkontakte', 'Vkontakte'],
24
- ['odnoklassniki', 'Odnoklassniki']
25
- ]
26
- end
27
-
28
- def provider_name
29
- if provider == 'open_id'
30
- "OpenID"
31
- else
32
- provider.titleize
10
+ class << self
11
+ def providers
12
+ [
13
+ ["facebook", "Facebook"],
14
+ ["vkontakte", "Vkontakte"],
15
+ ["odnoklassniki", "Odnoklassniki"]
16
+ # ['twitter', 'Twitter'],
17
+ # ['github', 'Github'],
18
+ # ['google_oauth2', 'Google']
19
+ ]
33
20
  end
34
21
  end
35
22
  end
@@ -34,4 +34,4 @@
34
34
  <% else %>
35
35
  <p>Авторизаций не найдено.</p>
36
36
  <% end %>
37
- <%= render "devise/shared/social_links" %>
37
+ <%= render "devise/shared/social_links" if User.ommiauth_enabled %>
@@ -7,5 +7,5 @@
7
7
  <%= f.email_field :email %></p>
8
8
  <p><%= f.submit "Отправить" %></p>
9
9
  <% end %>
10
- <%= render :partial => "devise/shared/links" %>
10
+ <%= render "devise/shared/links" %>
11
11
  </div>
@@ -1,5 +1,5 @@
1
1
  <p>===</p>
2
2
 
3
- <p>С уважением, администрация Доски объявлений Lipada</p>
3
+ <p>С уважением, администрация <%= I18n.t("devise_russian.mailer.site_name") %></p>
4
4
 
5
- <p>http://lipada.ru</p>
5
+ <p><%= I18n.t("devise_russian.mailer.site_url") %></p>
@@ -2,5 +2,5 @@
2
2
  <p>Кто-то отправил запрос на смену пароля. Вы можете сменить пароль, перейдя по ссылке ниже.</p>
3
3
  <p><%= link_to 'Сменить пароль', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p>
4
4
  <p>Если вы не посылали запрос, то просто проигнорируйте это письмо.</p>
5
- <p>Ваш парол останется прежним, пока вы не перейдете по указанной выше ссылке и не укажете новый.</p>
5
+ <p>Ваш пароль останется прежним, пока вы не перейдете по указанной выше ссылке и не укажете новый.</p>
6
6
  <%= render "bottom" %>
@@ -11,6 +11,5 @@
11
11
  <% end -%>
12
12
  <p><%= f.submit "Войти" %></p>
13
13
  <% end %>
14
- <%= render "devise/shared/social_links" %>
15
14
  <%= render "devise/shared/links" %>
16
15
  </div>
@@ -1,3 +1,4 @@
1
+ <%= render "devise/shared/social_links" if User.omniauth_enabled %>
1
2
  <div class="links">
2
3
  <%- if controller_name != 'sessions' %>
3
4
  <p><%= link_to "Вход", new_session_path(resource_name) %></p>
@@ -0,0 +1,4 @@
1
+ Devise.setup do |config|
2
+ config.router_name = :devise_russian
3
+ config.omniauth_path_prefix = "/auth"
4
+ end
@@ -4,7 +4,6 @@ ru:
4
4
  not_found: "не найдено"
5
5
  already_confirmed: "уже было подтверждено"
6
6
  not_locked: "не было заблокировано"
7
-
8
7
  devise:
9
8
  failure:
10
9
  unauthenticated: 'Вам нужно войти или зарегистрироваться перед тем, как продолжить.'
@@ -0,0 +1,7 @@
1
+ ru:
2
+ devise_russian:
3
+ my_authentications: Мои авторизации
4
+ authentication_not_found: Авторизация не найдена
5
+ mailer:
6
+ site_name: ******************
7
+ site_url: "http://********************"
data/config/routes.rb ADDED
@@ -0,0 +1,22 @@
1
+ # coding: utf-8
2
+ DeviseRussian::Engine.routes.draw do
3
+ devise_for :users, {
4
+ :module => :devise,
5
+ :path => "",
6
+ :path_names => {
7
+ :sign_in => "login",
8
+ :sign_out => "logout",
9
+ :sign_up => "register"
10
+ },
11
+ :controllers => {
12
+ :registrations => "registrations"
13
+ }
14
+ }
15
+
16
+ # Авторизации пользователя
17
+ resources :authentications, :only => [:index, :create, :destroy]
18
+
19
+ # Вход через социальные сети
20
+ match "/:provider/callback", :to => "authentications#create"
21
+ match "/failure", :to => "authentications#failure"
22
+ end
@@ -17,7 +17,9 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
+ gem.add_dependency "xss_terminate", ">= 0.2"
20
21
  gem.add_dependency "devise", ">= 2.2.3"
21
22
  gem.add_dependency "omniauth", ">= 1.1.3"
22
23
  gem.add_dependency "omniauth-oauth2", ">= 1.1.1"
24
+ gem.add_dependency "useful_helpers", ">= 0.0.1"
23
25
  end
@@ -1,10 +1,9 @@
1
1
  module DeviseRussian
2
2
  class Engine < ::Rails::Engine
3
3
  isolate_namespace DeviseRussian
4
- engine_name 'devise_russian'
4
+ engine_name "devise_russian"
5
5
 
6
6
  initializer "devise_russian.includers" do |app|
7
- # ActionController::Base.send :include, DeviseRussian::Controllers::Base
8
7
  ActiveRecord::Base.send :include, DeviseRussian::Models::Base
9
8
  end
10
9
  end
@@ -9,6 +9,11 @@ module DeviseRussian
9
9
  module ClassMethods
10
10
  def omniauthable
11
11
  has_many :authentications, :dependent => :destroy
12
+
13
+ def ommiauth_enabled
14
+ true
15
+ end
16
+
12
17
  unless included_modules.include? InstanceMethods
13
18
  include InstanceMethods
14
19
  end
@@ -22,18 +27,12 @@ module DeviseRussian
22
27
  user_email = omniauth['extra']['raw_info']['email'] rescue nil
23
28
  user_name = omniauth['extra']['raw_info']['first_name'] rescue nil
24
29
 
25
- # Facebook omniauth: #<OmniAuth::AuthHash credentials=#<Hashie::Mash expires=true expires_at=1368497603 token="AAAHyrzX1f8gBAEZBgtqQZCcLHgRDMbioJ6cltTxqTd3qlnvY1JXAtOivUKu8DzVfKf3f2x7ZCbZAF6qciuww2qVGVrFq6yoVxwZCHPZCn0HgZDZD"> extra=#<Hashie::Mash raw_info=#<Hashie::Mash email="lapida@ya.ru" first_name="Lipada" gender="male" hometown=#<Hashie::Mash id="111803002172556" name="Tomsk, Russia"> id="100005327070305" last_name="Ru" link="http://www.facebook.com/profile.php?id=100005327070305" locale="ru_RU" name="Lipada Ru" timezone=7 updated_time="2013-02-20T15:25:45+0000" verified=true>> info=#<OmniAuth::AuthHash::InfoHash email="lapida@ya.ru" first_name="Lipada" image="http://graph.facebook.com/100005327070305/picture?type=square" last_name="Ru" name="Lipada Ru" urls=#<Hashie::Mash Facebook="http://www.facebook.com/profile.php?id=100005327070305"> verified=true> provider="facebook" uid="100005327070305">
26
-
27
- # Vkontakte omniauth: #<OmniAuth::AuthHash credentials=#<Hashie::Mash expires=true expires_at=1363456283 token="46de998d8c438603e0d92af694d47744260b89f1e493ffa2403c41ca98aaf9a26aae375a384e0817711c5"> extra=#<Hashie::Mash raw_info=#<Hashie::Mash city="144" country="1" first_name="Lipada" last_name="Ru" nickname="" online=0 photo="https://vk.com/images/camera_c.gif" photo_big="https://vk.com/images/camera_a.gif" screen_name="id201853841" sex=2 uid=201853841>> info=#<OmniAuth::AuthHash::InfoHash first_name="Lipada" image="https://vk.com/images/camera_c.gif" last_name="Ru" location="Россия, Томск" name="Lipada Ru" nickname="" urls=#<Hashie::Mash Vkontakte="http://vk.com/id201853841">> provider="vkontakte" uid=201853841>
28
-
29
- # Odnoklassniki omniauth: #<OmniAuth::AuthHash credentials=#<Hashie::Mash expires=false token="2aipa.2-71160004l6v6h3r406y3k6bsrv9"> extra=#<Hashie::Mash raw_info=#<Hashie::Mash age=25 birthday="1987-07-14" first_name="Lipada" gender="male" has_email=true last_name="ru" locale="ru" location=#<Hashie::Mash city="Томск" country="RUSSIAN_FEDERATION"> name="Lipada ru" online="web" pic_1="http://i503.odnoklassniki.ru/res/stub_50x50.gif" pic_2="http://usd8.odnoklassniki.ru/res/stub_128x96.gif" uid="555839750549">> info=#<OmniAuth::AuthHash::InfoHash first_name="Lipada" image="http://i503.odnoklassniki.ru/res/stub_50x50.gif" last_name="ru" name="Lipada ru" urls=#<Hashie::Mash Odnoklassniki="http://www.odnoklassniki.ru/profile/555839750549">> provider="odnoklassniki" uid="555839750549">
30
-
31
30
  if with_self
32
31
  self.email = user_email if user_email && self.email.blank?
33
32
  self.name = user_name if user_name && self.name.blank?
34
33
  end
35
34
 
36
- self.authentications.build(
35
+ self.authentications.new(
37
36
  :provider => provider,
38
37
  :uid => uid,
39
38
  :email => user_email,
@@ -1,3 +1,3 @@
1
1
  module DeviseRussian
2
- VERSION = "0.0.13"
2
+ VERSION = "0.0.21"
3
3
  end
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+ require "devise"
2
3
  require "devise_russian/models/base"
3
4
  require "devise_russian/engine"
4
5
  require "devise_russian/version"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_russian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.21
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-31 00:00:00.000000000 Z
12
+ date: 2013-04-07 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: xss_terminate
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0.2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0.2'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: devise
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +75,22 @@ dependencies:
59
75
  - - ! '>='
60
76
  - !ruby/object:Gem::Version
61
77
  version: 1.1.1
78
+ - !ruby/object:Gem::Dependency
79
+ name: useful_helpers
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 0.0.1
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.1
62
94
  description: Часто используемые наработки по джему Devise. Включает решение по авторизации
63
95
  в социальных сетях
64
96
  email:
@@ -174,7 +206,10 @@ files:
174
206
  - app/views/devise/shared/_social_links.html.erb
175
207
  - app/views/devise/unlocks/new.html.erb
176
208
  - config/ca-bundle.crt
209
+ - config/initializers/devise.rb
177
210
  - config/locales/devise.ru.yml
211
+ - config/locales/devise_russian.ru.yml
212
+ - config/routes.rb
178
213
  - devise_russian.gemspec
179
214
  - lib/devise_russian.rb
180
215
  - lib/devise_russian/engine.rb