OSDN Git Service

add: omniauth
authoryasushiito <yas@pen-chan.jp>
Thu, 16 Jul 2015 09:09:32 +0000 (18:09 +0900)
committeryasushiito <yas@pen-chan.jp>
Thu, 16 Jul 2015 09:09:32 +0000 (18:09 +0900)
15 files changed:
Gemfile
app/assets/images/google.png [new file with mode: 0644]
app/assets/images/twitter.png [new file with mode: 0644]
app/assets/javascripts/admin.js
app/assets/javascripts/omniauth_callbacks.coffee [deleted file]
app/assets/stylesheets/omniauth_callbacks.css.scss [deleted file]
app/assets/stylesheets/test.css.scss
app/controllers/omniauth_callbacks_controller.rb
app/models/user.rb
app/views/user_sessions/new.html.erb
config/initializers/devise.rb
config/locales/pettanr.ja.yml
config/secrets.yml.org [new file with mode: 0644]
public/images/google.png [new file with mode: 0644]
public/images/twitter.png [new file with mode: 0644]

diff --git a/Gemfile b/Gemfile
index 3304693..cb1e1fe 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -4,6 +4,7 @@ gem 'rails', '~> 4.1.0'
 gem 'devise'
 gem 'omniauth'
 gem 'omniauth-twitter'
+gem 'omniauth-google-oauth2'
 gem 'rest-client'
 gem 'underscore-rails'
 # gem 'backbone-rails'
diff --git a/app/assets/images/google.png b/app/assets/images/google.png
new file mode 100644 (file)
index 0000000..dd2dc63
Binary files /dev/null and b/app/assets/images/google.png differ
diff --git a/app/assets/images/twitter.png b/app/assets/images/twitter.png
new file mode 100644 (file)
index 0000000..c2822dc
Binary files /dev/null and b/app/assets/images/twitter.png differ
index 3e643e8..e379484 100644 (file)
@@ -5,5 +5,6 @@
 // the compiled file.
 //
 //= require jquery
+//= require jquery_ujs
 //= require_directory ./work
 //= require system
diff --git a/app/assets/javascripts/omniauth_callbacks.coffee b/app/assets/javascripts/omniauth_callbacks.coffee
deleted file mode 100644 (file)
index 24f83d1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# Place all the behaviors and hooks related to the matching controller here.
-# All this logic will automatically be available in application.js.
-# You can use CoffeeScript in this file: http://coffeescript.org/
diff --git a/app/assets/stylesheets/omniauth_callbacks.css.scss b/app/assets/stylesheets/omniauth_callbacks.css.scss
deleted file mode 100644 (file)
index 77eaa70..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-// Place all the styles related to the omniauth_callbacks controller here.
-// They will automatically be included in application.css.
-// You can use Sass (SCSS) here: http://sass-lang.com/
index 92bc178..6a610bf 100644 (file)
@@ -60,6 +60,26 @@ select.error {
   position:    absolute;
 }
 
+.auth-servers {
+  background: #f0f0f0;
+  padding: 10px;
+  display: inline-block;
+  list-style-type: none;
+}
+.auth-servers li {
+  float: left;
+  padding: 10px;
+  margin:  10px;
+}
+.twitter {
+  width: 30%;
+  background: #f0ffff;
+}
+.google {
+  width: 30%;
+  background: #fff0f0;
+}
+
 // hide number field's spinner
   //for chrome
   input[type=number]::-webkit-outer-spin-button,
index d41303c..a5aea55 100644 (file)
@@ -1,4 +1,4 @@
-class OmniauthCallbacksController < ApplicationController
+class OmniauthCallbacksController < Devise::OmniauthCallbacksController
   
   def all
     user = User.from_omniauth(request.env["omniauth.auth"])
@@ -15,6 +15,10 @@ class OmniauthCallbacksController < ApplicationController
     self.all
   end
   
+  def google_oauth2
+    self.all
+  end
+  
   def failure
     return render :json => {:success => false, :errors => ["Login failed."]}
   end
index bde3804..69ca60d 100644 (file)
@@ -6,7 +6,8 @@ class User < ActiveRecord::Base
   # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
   devise :database_authenticatable, :registerable,
          :recoverable, :rememberable, :trackable,  :validatable, 
-         :omniauthable#, :confirmable
+         :omniauthable, :omniauth_providers => [:twitter, :google_oauth2]
+         #, :confirmable
   
   def create_token
     loop do
index 3b1c8eb..2266c47 100644 (file)
@@ -1,27 +1,43 @@
-<% @page_title = t('users.signin.signin') %>
-<h1><%= link_to h(manifest.magic_numbers['profile']['users']['caption']), root_path %></h1>
-<table class="no-border">
-  <tr>
-    <td width="60%">
-      <p><%= sanitize manifest.magic_numbers['profile']['users']['description'], :tags => %w(a p img br) %></p>
-    </td>
-    <td width="40%">
-      <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
-        <div><%= f.label :email %><br />
-        <%= f.email_field :email %></div>
+<% @page_title = t('users.signin.title') %>
+<h1>
+  <%= link_to h(manifest.magic_numbers['profile']['users']['caption']), root_path %>
+  <%= link_to h(manifest.magic_numbers['profile']['users']['caption']), 'll/' %>
+</h1>
+<h2>
+  <%= sanitize manifest.magic_numbers['profile']['users']['description'], :tags => %w(a p img br) %>
+</h2>
+<div>
+  <%= t('users.signin.notice') %>
+</div>
+<ul class="auth-servers">
+  <li class="twitter">
+    <%= link_to t('users.signin.twitter.caption'), user_omniauth_authorize_path(:twitter) %>
+    <%= link_to tag(:img, :src => '/images/twitter.png'), user_omniauth_authorize_path(:twitter) %>
+    <p><%= t('users.signin.twitter.notice') %></p>
+  </li>
+  <li class="google">
+    <%= link_to t('users.signin.google.caption'), user_omniauth_authorize_path(:google_oauth2) %>
+    <%= link_to tag(:img, :src => '/images/google.png'), user_omniauth_authorize_path(:google_oauth2) %>
+    <p><%= t('users.signin.google.notice') %></p>
+  </li>
+</ul>
+<div class="row_break"></div>
+<div class="users-signin">
+  <h3>
+    <%= t('users.signin.form.notice') %>
+  </h3>
+  <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
+    <div><%= f.label :email %><br />
+    <%= f.email_field :email %></div>
 
-        <div><%= f.label :password %><br />
-        <%= f.password_field :password %></div>
+    <div><%= f.label :password %><br />
+    <%= f.password_field :password %></div>
 
-        <% if devise_mapping.rememberable? -%>
-          <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
-        <% end -%>
+    <% if devise_mapping.rememberable? -%>
+      <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
+    <% end -%>
 
-        <div><%= f.submit t('users.signin.signin') %></div>
-      <% end %>
-      <p>      <%= link_to "Sign in with Twitter", user_omniauth_authorize_path(:twitter) %>
-</p>
-      <%= render :partial => "/users/shared/links" %>
-    </td>
-  </tr>
-</table>
+    <div><%= f.submit t('users.signin.form.signin') %></div>
+  <% end %>
+  <%= render :partial => "/users/shared/links" %>
+</div>
index d64c904..3f64801 100644 (file)
@@ -7,6 +7,7 @@ Devise.setup do |config|
   config.mailer_sender = "please-change-me-at-config-initializers-devise@example.com"
 config.sign_out_via = :get
   config.omniauth :twitter, Rails.application.secrets.twitter_api_key, Rails.application.secrets.twitter_api_secret
+  config.omniauth :google_oauth2, Rails.application.secrets.google_api_key, Rails.application.secrets.google_api_secret
   config.secret_key = Rails.application.secrets.devise_secret
   # Configure the class responsible to send e-mails.
   # config.mailer = "Devise::Mailer"
index eb2d325..1188ba4 100644 (file)
@@ -713,7 +713,16 @@ ja:
       signup: 登録する
     signin:
       title: ログイン
-      signin: ログイン
+      notice: 下記のサービスのアカウントを使って認証できます。
+      twitter:
+        caption: Twitterアカウントを使って認証する
+        notice: 別途メールアドレスの入力が必要となります。Twitterで通信を許可した後、エラーメッセージの入った入力フォームが表示されますが、そのままメールアドレスを入力して登録してください。
+      google:
+        caption: googleアカウントを使って認証する
+        notice: 。
+      form:
+        notice: アカウントを作成してサインイン(開発者向け)
+        signin: ログイン
     edit:
       title: アカウントの設定変更
     forgot:
diff --git a/config/secrets.yml.org b/config/secrets.yml.org
new file mode 100644 (file)
index 0000000..178071f
--- /dev/null
@@ -0,0 +1,13 @@
+development:\r
+  secret_key_base: xxxxxxxxxxxxxx\r
+  devise_secret: yyyyyyyyyyyyyyy\r
+  twitter_api_key: twitter-xxxxxxxxxxxxxx\r
+  twitter_api_secret: twitter-zzzzzzzzzzzz\r
+  aws_access_key_id: aws-aid-zzzzzz\r
+  aws_secret_access_key: aws-key-xxxxxx\r
+\r
+test:\r
+  secret_key_base: xxxxxxxxxxxxxx\r
+\r
+production:\r
+  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>\r
diff --git a/public/images/google.png b/public/images/google.png
new file mode 100644 (file)
index 0000000..dd2dc63
Binary files /dev/null and b/public/images/google.png differ
diff --git a/public/images/twitter.png b/public/images/twitter.png
new file mode 100644 (file)
index 0000000..c2822dc
Binary files /dev/null and b/public/images/twitter.png differ