Skip to content

Commit 8d2b875

Browse files
committed
FIX #36 登録できるメールアドレスのドメインを限定
1 parent 6f3b031 commit 8d2b875

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

app/controllers/sessions_controller.rb

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@ class SessionsController < ApplicationController
22
def callback
33
auth = request.env['omniauth.auth']
44

5-
user = User.find_by(google_uid: auth[:uid])
6-
unless user
7-
user = User.create(google_uid: auth[:uid], name: auth[:info][:name], email: auth[:info][:email], image_url: auth[:info][:image])
5+
if auth.info['email'].split('@')[1] == ENV['RESTRICT_DOMAIN']
6+
user = User.find_by(google_uid: auth[:uid])
7+
user = User.form_omniauth(auth) unless user
8+
session[:user_id] = user.id
9+
redirect_to root_path
10+
else
11+
flash[:error] = "
12+
ドメインが#{ENV['RESTRICT_DOMAIN']}ではありません。正しいドメインでサインイン・ログインしてください
13+
"
14+
redirect_to root_path
815
end
9-
session[:user_id] = user.id
10-
redirect_to root_path
1116
end
1217

1318
def destroy

app/models/user.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,13 @@
1313

1414
class User < ActiveRecord::Base
1515
has_many :poem, dependent: :destroy
16+
17+
def self.form_omniauth(auth)
18+
User.create(
19+
google_uid: auth[:uid],
20+
name: auth[:info][:name],
21+
email: auth[:info][:email],
22+
image_url: auth[:info][:image]
23+
)
24+
end
1625
end

config/initializers/omniauth.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
Rails.application.config.middleware.use OmniAuth::Builder do
2-
provider :google_oauth2, ENV["GOOGLE_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"]
2+
options = { hd: ENV["RESTRICT_DOMAIN"] }
3+
provider :google_oauth2, ENV["GOOGLE_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"], options
34
end
45
OmniAuth.config.on_failure = Proc.new { |env|
56
OmniAuth::FailureEndpoint.new(env).redirect_to_failure

0 commit comments

Comments
 (0)