we_bridge_rails_engine_users 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +37 -0
- data/app/assets/javascripts/users.js +2 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/assets/stylesheets/users.css +4 -0
- data/app/controllers/sessions_controller.rb +82 -0
- data/app/controllers/users_controller.rb +9 -0
- data/app/helpers/users_helper.rb +2 -0
- data/app/models/person.rb +13 -0
- data/app/models/person_name.rb +6 -0
- data/app/models/person_name_text.rb +24 -0
- data/app/models/person_status.rb +2 -0
- data/app/models/person_text.rb +4 -0
- data/app/models/user.rb +12 -0
- data/app/models/user_account.rb +13 -0
- data/app/models/user_text.rb +13 -0
- data/app/views/sessions/login.html.builder +23 -0
- data/app/views/users/_form.html.builder +14 -0
- data/app/views/users/edit.html.builder +1 -0
- data/app/views/users/index.html.builder +1 -0
- data/app/views/users/new.html.builder +1 -0
- data/app/views/users/show.html.builder +1 -0
- data/config/routes.rb +14 -0
- data/db/migrate/20150611132719_add_sessions_table.rb +12 -0
- data/db/migrate/20150612005752_create_people.rb +41 -0
- data/db/migrate/20150712132226_add_users.rb +41 -0
- data/lib/tasks/we_bridge_rails_engine_langs_tasks.rake +4 -0
- data/lib/we_bridge_rails_engine_users.rb +16 -0
- data/lib/we_bridge_rails_engine_users/application_controller.rb +41 -0
- data/lib/we_bridge_rails_engine_users/engine.rb +13 -0
- data/lib/we_bridge_rails_engine_users/provider_settings.rb +76 -0
- data/lib/we_bridge_rails_engine_users/version.rb +3 -0
- data/spec/controllers/sessions_controller_spec.rb +95 -0
- data/spec/controllers/users_controller_spec.rb +182 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +16 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +8 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.builder +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +29 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +28 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +41 -0
- data/spec/dummy/config/environments/production.rb +79 -0
- data/spec/dummy/config/environments/test.rb +42 -0
- data/spec/dummy/config/initializers/assets.rb +11 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/provider_settings.rb +2 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/omniauth.yml +63 -0
- data/spec/dummy/config/omniauth.yml.org +63 -0
- data/spec/dummy/config/routes.rb +56 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20150803101150_create_langs.rb +20 -0
- data/spec/dummy/db/schema.rb +134 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +6092 -0
- data/spec/dummy/log/test.log +17718 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/95kd6PNg5I5Dn8j-ds2kESZ4yqJWDlUtJlRkBYcHG9I.cache +2 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/9HedZDeYq2v6HBA9bD890T4cGZibttejhDq0xfEW1OA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Cgic9Tyvkk6sqvxCRHMOht8-YWqOpKEbwWLaLUhtCu8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/DztYUoD64LBf1ciKDNbwfU3ggD7rYJ4R0V_4HPJxzL4.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/EQFBBT0dblIxqvZw8BbpahKH5sRVDrYirvYcxKXzg6s.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/G4HidZB-L5zKNezfe7O20FU58YFyoibIF0zyMpkigNA.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/H5b9tPX4ofo6fe6MRg91ChMHmowlsYkfUKJ9b0NUPIU.cache +3 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/HYpkPupwGozKHs5qChj3sJ-IhRP-YDSiqc-n_hQB1RU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/N4s9e38lth9IeIVQYEn7L9iPWJJEt_FeNaWXgogeW80.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/OvqhBxVGrgbFQCuriofYnoMd-Hh6MyK7cCQHpSQ6mY8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Px2rpH6lCQmniOcJktyX-jHQL2GJFj42xgRDMwftICg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/TFk4N5unhxWMiNeFWRf2BmB7KZ2y9c6v4RR7SWHFSl8.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/To7LnOAuTthN8xMQdWQRC_bDQ1AeR2Jt1SihvBvu7VM.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/Tuk6Xmd6rNalBiAHW2q9yxztUsaXh6vGBN4kuwW4coo.cache +2 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/UthTiMoUK3z7QvIjgYJBlSTzwZ37UE-dam-92yUeRlg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/VhMjuakubXLw9TGrYLMTshl1haIqjdUQDFmrtWqFg48.cache +2 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/W6OPXh5hmWxHo1cCFc6MpmejeEJM-OWXJkmXVnoDdjk.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/ivn9YXCSjX-45u61mNupKlBqHNTDKvF7tsbBnXjtu3o.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/iyOlCOrvKIBBbvSO3lENE8lJeeFJpDFUKEP4NAUTizg.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/j7FsLjc9QBY0x2gZy--i0nskAf-2VCkQ5tCr7M1FKww.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/kR7RRgmwH5OahOaSgGVRid1-zpVfnzh9ktcpTc2r8U8.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/mAcPZ6Lxmw7lRLF2rOOauuET5gBKl9QaZJgnOkL56Uw.cache +2 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/mOtV0PLRbjn4_sQL0ZHsuAv79ctsBmFq0tLYtQFngZs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/msJs71sOQgd6VP4kducGvRsZ3uZNW4d_vksrGcVZtH4.cache +2 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/pCDWkYCgTWLKByBqi8TDJneTltLoW9rReMGsBiGm9Uo.cache +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/v3.0/pOOmld85ShNKx5kGi9BubXdV_VZJntx0EoTivl0-bBM.cache +1 -0
- data/spec/dummy/tmp/pids/server.pid +1 -0
- data/spec/factories/users.rb +6 -0
- data/spec/helpers/users_helper_spec.rb +15 -0
- data/spec/models/user_spec.rb +5 -0
- data/spec/omniauth.yml +63 -0
- data/spec/rails_helper.rb +54 -0
- data/spec/routing/users_routing_spec.rb +31 -0
- data/spec/spec_helper.rb +95 -0
- data/spec/views/users/edit.html.builder_spec.rb +16 -0
- data/spec/views/users/index.html.builder_spec.rb +16 -0
- data/spec/views/users/new.html.builder_spec.rb +14 -0
- data/spec/views/users/show.html.builder_spec.rb +13 -0
- metadata +383 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bc7a50b8b87213811b77f8cb7c7d97d6702e503e
|
4
|
+
data.tar.gz: c99dd8750ffc201199e8155f6cfa18779d081c49
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8243a0de891c2a6fa67631a226754d6084a9b7d06d9e830a9629a656c583e3c62c914b3a7c1e9e181e20d86523ebe6d2df182901ed3f81904b39c7c2344955be
|
7
|
+
data.tar.gz: f617d1bf2a045e2be9bc38329f5054178be90f1c5ffd17e0618eb4cae3be1133aed88a8cd34e97e91e11c37a9796dbfd10915c2c4ab86a862597b2db57319281
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2015 Shinjiro Itagaki
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'WeBridgeRailsEngineUsers'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
load 'rails/tasks/statistics.rake'
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
Bundler::GemHelper.install_tasks
|
26
|
+
|
27
|
+
require 'rake/testtask'
|
28
|
+
|
29
|
+
Rake::TestTask.new(:test) do |t|
|
30
|
+
t.libs << 'lib'
|
31
|
+
t.libs << 'test'
|
32
|
+
t.pattern = 'test/**/*_test.rb'
|
33
|
+
t.verbose = false
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
task default: :test
|
@@ -0,0 +1,56 @@
|
|
1
|
+
body { background-color: #fff; color: #333; }
|
2
|
+
|
3
|
+
body, p, ol, ul, td {
|
4
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
5
|
+
font-size: 13px;
|
6
|
+
line-height: 18px;
|
7
|
+
}
|
8
|
+
|
9
|
+
pre {
|
10
|
+
background-color: #eee;
|
11
|
+
padding: 10px;
|
12
|
+
font-size: 11px;
|
13
|
+
}
|
14
|
+
|
15
|
+
a { color: #000; }
|
16
|
+
a:visited { color: #666; }
|
17
|
+
a:hover { color: #fff; background-color:#000; }
|
18
|
+
|
19
|
+
div.field, div.actions {
|
20
|
+
margin-bottom: 10px;
|
21
|
+
}
|
22
|
+
|
23
|
+
#notice {
|
24
|
+
color: green;
|
25
|
+
}
|
26
|
+
|
27
|
+
.field_with_errors {
|
28
|
+
padding: 2px;
|
29
|
+
background-color: red;
|
30
|
+
display: table;
|
31
|
+
}
|
32
|
+
|
33
|
+
#error_explanation {
|
34
|
+
width: 450px;
|
35
|
+
border: 2px solid red;
|
36
|
+
padding: 7px;
|
37
|
+
padding-bottom: 0;
|
38
|
+
margin-bottom: 20px;
|
39
|
+
background-color: #f0f0f0;
|
40
|
+
}
|
41
|
+
|
42
|
+
#error_explanation h2 {
|
43
|
+
text-align: left;
|
44
|
+
font-weight: bold;
|
45
|
+
padding: 5px 5px 5px 15px;
|
46
|
+
font-size: 12px;
|
47
|
+
margin: -7px;
|
48
|
+
margin-bottom: 0px;
|
49
|
+
background-color: #c00;
|
50
|
+
color: #fff;
|
51
|
+
}
|
52
|
+
|
53
|
+
#error_explanation ul li {
|
54
|
+
font-size: 12px;
|
55
|
+
list-style: square;
|
56
|
+
}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
class SessionsController < ApplicationController
|
2
|
+
|
3
|
+
# 各プロバイダごとのログイン用urlを返す
|
4
|
+
def login
|
5
|
+
@providers = []
|
6
|
+
WeBridgeRailsEngineUsers::ProviderSettings.availables do |name|
|
7
|
+
@providers << {url: WeBridgeRailsEngineUsers::ProviderSettings.request_path(name), display: name.to_s.capitalize }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def callback
|
12
|
+
auth = request.env['omniauth.auth']
|
13
|
+
user = nil
|
14
|
+
if account = UserAccount.where(provider: auth['provider'], uid: auth['uid']).first
|
15
|
+
user = callback_if_account_found(account,auth)
|
16
|
+
else
|
17
|
+
user = callback_if_account_not_found(auth)
|
18
|
+
end
|
19
|
+
set_user_id(user.id) if user && !logged_in?
|
20
|
+
if user
|
21
|
+
else
|
22
|
+
end
|
23
|
+
ensure
|
24
|
+
redirect_to(session[:redirect_to] || root_path) and return
|
25
|
+
end
|
26
|
+
|
27
|
+
def callback_if_account_found(account,auth)
|
28
|
+
if logged_in?
|
29
|
+
if account.user && account.user_id != current_user.id
|
30
|
+
# 既に他のユーザーが使っている
|
31
|
+
# ユーザーが切り替わるようにしてもいいような気がするかもしれないが、セキュリティ上のリスクを考慮して許可しないようにしている。
|
32
|
+
# 例えば、あるユーザーAは、googleアカウントとtwitterアカウントの両方でログイン可能であり、かつgoogleアカウントは他社との共有のアカウント、twitterアカウントは自分だけが使える場合、googleのアカウントでログインできる人ならだれでもAになりすますことができてしまうので危険。しかもAはそのことに気が付かない可能性が高い
|
33
|
+
# error403 "#{account.provider} is used by other user."
|
34
|
+
redirect_to root_path
|
35
|
+
return nil
|
36
|
+
# ログインユーザーが切り替わる
|
37
|
+
# account.user
|
38
|
+
end
|
39
|
+
current_user
|
40
|
+
else
|
41
|
+
user = account.user
|
42
|
+
if !user # if account is exists but user is deleted
|
43
|
+
user = self.class.create_user_by_auth(auth)
|
44
|
+
account.update(user_id: user.id) if account.user_id != user.id
|
45
|
+
end
|
46
|
+
user
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def callback_if_account_not_found(auth)
|
51
|
+
user = nil
|
52
|
+
UserAccount.transaction do
|
53
|
+
if logged_in?
|
54
|
+
user = current_user
|
55
|
+
else
|
56
|
+
user = self.class.create_user_by_auth(auth)
|
57
|
+
user.text.update!(nick_name: auth.info[:name])
|
58
|
+
end
|
59
|
+
UserAccount.create_with_omniauth!(auth, user.id)
|
60
|
+
end
|
61
|
+
user
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.create_user_by_auth(auth)
|
65
|
+
User.create!(email: auth.info[:email], user_img_url: auth.info[:image], lang_id: Lang[I18n.locale].id)
|
66
|
+
end
|
67
|
+
|
68
|
+
def failure
|
69
|
+
flash[:notice]='login failed'
|
70
|
+
redirect_to action: :login
|
71
|
+
end
|
72
|
+
|
73
|
+
# GET /users/logout
|
74
|
+
def logout
|
75
|
+
set_user_id(nil)
|
76
|
+
# flash[:notice]=(logged_in? ? "logout" : "not logged in")
|
77
|
+
# flash[:status]=:ok
|
78
|
+
# render status: :ok, location: root_path
|
79
|
+
# request.referrer[:redirect_to] ||
|
80
|
+
redirect_to(params["redirect_to"] || root_path) and return
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'we_bridge/auto_view_helper/controller'
|
2
|
+
class UsersController < ApplicationController
|
3
|
+
include WeBridge::AutoViewHelper::Controller
|
4
|
+
set_model User
|
5
|
+
before_action only: [:edit,:update,:destroy] do
|
6
|
+
login_required
|
7
|
+
check_current_user(@record)
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'activerecord/mlang'
|
2
|
+
class PersonNameText < ActiveRecord::Base
|
3
|
+
include ActiveRecord::Mlang::Text
|
4
|
+
|
5
|
+
include Accessable
|
6
|
+
set_accessible_attrs :first_name,:first_name_pron,:last_name,:last_name_pron,:nick_name,:nick_name_pron
|
7
|
+
|
8
|
+
def full_name
|
9
|
+
(if self.lang.east?
|
10
|
+
[self.last_name,self.first_name]
|
11
|
+
else
|
12
|
+
[self.first_name,self.last_name]
|
13
|
+
end).join(" ")
|
14
|
+
end
|
15
|
+
|
16
|
+
def name
|
17
|
+
fn = self.full_name.to_s
|
18
|
+
if fn.empty?
|
19
|
+
fn
|
20
|
+
else
|
21
|
+
self.nick_name
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/app/models/user.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'action_view/helpers/auto_tag_helper/form_info'
|
2
|
+
require 'activerecord/mlang'
|
3
|
+
require 'we_bridge_rails_engine_langs'
|
4
|
+
class User < ActiveRecord::Base
|
5
|
+
include ActiveRecord::Mlang
|
6
|
+
include ActionView::Helpers::AutoTagHelper::FormInfo
|
7
|
+
belongs_to :lang
|
8
|
+
set_accessible_attrs :email,:user_img_url,:lang_id
|
9
|
+
def __display__
|
10
|
+
self.text(self.lang_id).try(:__display__) || self.email
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class UserAccount < ActiveRecord::Base
|
2
|
+
belongs_to :user
|
3
|
+
def self.create_with_omniauth!(auth,user_id)
|
4
|
+
create! do |user_account|
|
5
|
+
user_account.user_id = user_id
|
6
|
+
user_account.provider = auth['provider']
|
7
|
+
user_account.uid = auth['uid']
|
8
|
+
info = auth["info"] || {}
|
9
|
+
user_account.nickname = info['nickname']
|
10
|
+
user_account.name = info['name']
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'activerecord/mlang'
|
2
|
+
require 'action_view/helpers/auto_tag_helper/form_info'
|
3
|
+
class UserText < ActiveRecord::Base
|
4
|
+
include ActiveRecord::Mlang::Text
|
5
|
+
include ActionView::Helpers::AutoTagHelper::FormInfo
|
6
|
+
belongs_to :person
|
7
|
+
belongs_to :lang
|
8
|
+
set_accessible_attrs :nick_name, :nick_name_pron
|
9
|
+
def __display__
|
10
|
+
self.nick_name
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
markup do |m|
|
2
|
+
m.section do
|
3
|
+
if logged_in?
|
4
|
+
m.h2 "user info"
|
5
|
+
m.div style: "width: 64px; height:64px; background-size: contain; background-repeat: no-repeat; background-image: url(#{current_user.user_img_url});" if current_user.user_img_url.present?
|
6
|
+
m.div do
|
7
|
+
m.a current_user.try(:__display__), href: user_path(id: current_user.id)
|
8
|
+
end
|
9
|
+
m.a "logout", href: logout_path
|
10
|
+
else
|
11
|
+
m.h2 "login by"
|
12
|
+
# m << render('layouts/form')
|
13
|
+
m.ul do
|
14
|
+
@providers.each do |p|
|
15
|
+
m.li do
|
16
|
+
m.a p[:display].to_s, href: p[:url]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
form_for @user do |f|
|
2
|
+
markup{|m|
|
3
|
+
if @user.errors.any?
|
4
|
+
#error_explanation
|
5
|
+
m.h2 "#{pluralize(@user.errors.count, "error")} prohibited this user from being saved:"
|
6
|
+
m.ul do
|
7
|
+
@user.errors.full_messages.each do |message|
|
8
|
+
m.li message
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
m << f.submit
|
13
|
+
}.html_safe
|
14
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
edit_common @record, user_path(id: @record), back_path: users_path, show_path: user_path(id: @record)
|
@@ -0,0 +1 @@
|
|
1
|
+
index_common(@records, show_path: ->(record){ user_path(id: record.id)}, edit_path: ->(record){ edit_user_path(record) }, new_path: nil )
|
@@ -0,0 +1 @@
|
|
1
|
+
new_common(@record, users_path, back_path: users_path)
|
@@ -0,0 +1 @@
|
|
1
|
+
show_common @record, show_path: user_path(id: @record), back_path: users_path, edit_path: edit_user_path(id: @record)
|
data/config/routes.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
root 'sessions#login'
|
3
|
+
|
4
|
+
get 'logout' => 'sessions#logout'
|
5
|
+
settings = WeBridgeRailsEngineUsers::ProviderSettings
|
6
|
+
settings.availables do |name|
|
7
|
+
get settings.request_path(name), as: settings.auth_as(name)
|
8
|
+
get settings.callback_path(name) => "sessions#callback", as: settings.auth_callback_as(name), provider: name
|
9
|
+
end
|
10
|
+
|
11
|
+
match '/auth/failure' => 'sessions#failure', via: :get
|
12
|
+
|
13
|
+
resources :users,only: [:index,:show,:edit,:update,:destroy]
|
14
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class AddSessionsTable < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :sessions do |t|
|
4
|
+
t.string :session_id, :null => false
|
5
|
+
t.text :data
|
6
|
+
t.timestamps
|
7
|
+
end
|
8
|
+
|
9
|
+
add_index :sessions, :session_id, :unique => true
|
10
|
+
add_index :sessions, :updated_at
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class CreatePeople < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :people do |t|
|
4
|
+
t.integer :sex, default: 1 , null: false
|
5
|
+
t.integer :birth_year, null: false, default: 0
|
6
|
+
t.integer :birth_month, null: false, default: 0
|
7
|
+
t.integer :birth_day, null: false, default: 0
|
8
|
+
t.string :blood_type
|
9
|
+
t.integer :created_by, null: false
|
10
|
+
t.integer :updated_by, null: false
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
|
14
|
+
create_table :person_texts do |t|
|
15
|
+
t.integer :parent_id, null: false
|
16
|
+
t.integer :lang_id, null: false
|
17
|
+
t.integer :created_by, null: false
|
18
|
+
t.integer :updated_by, null: false
|
19
|
+
t.timestamps
|
20
|
+
end
|
21
|
+
add_index :person_texts, [:parent_id,:lang_id], unique: true
|
22
|
+
|
23
|
+
create_table :person_names do |t|
|
24
|
+
t.integer :person_id, null: false
|
25
|
+
t.integer :revision, null: false, default: 0
|
26
|
+
t.date :modified_on, null: false
|
27
|
+
t.timestamps
|
28
|
+
end
|
29
|
+
add_index :person_names, [:person_id,:revision], unique: true
|
30
|
+
|
31
|
+
create_table :person_name_texts do |t|
|
32
|
+
t.integer :parent_id, null: false
|
33
|
+
t.integer :lang_id, null: false
|
34
|
+
t.string :first_name, null: true
|
35
|
+
t.string :first_name_pron, null: true
|
36
|
+
t.string :last_name, null: true
|
37
|
+
t.string :last_name_pron, null: true
|
38
|
+
end
|
39
|
+
add_index :person_name_texts, [:parent_id,:lang_id], unique: true, name: :idx_person_name_texts
|
40
|
+
end
|
41
|
+
end
|