Skip to content

Commit

Permalink
Google Authentication (publiclab#2771)
Browse files Browse the repository at this point in the history
* Routes modified

* Set the views

* Modified error messages and user_tag

* Add User_Tag as identity and find user_tag

* User_sessions_controller modified

* User_tag modified

* user session controller modified

* Checkpoint 1

*  checkpoint1 codeclimate errors fixed

* Checkpoint 2

* checkpoint 2

* User is created from sign up process successfully

* create a usertag_with_omniauth

* Search a usertag for oauth

* search user_tag existing in db

* create a user with omniauth test

* LOGIN WORKS

* current_user=(user) method removed

* sign up correction

* routing tests for google oauth

* Google auth details saved

* Google should return omniauth hash test

* sign up and login via provider

* sign up and login via provider alternative flow

* flash message test added

* login user with an email and then connect google provider

* .

* Changes according to rails 5 done

* Changes according to rails 5 done

* Environment nomenclature updated

* Comments added

* Adding application.yml

* Submitting a draft  (publiclab#2747)

* Checkbox and JS function added

* publish_draft method, routes, mail_notify_stop

* coauthor can see and publish

* bower update

* undo and trying

* draft label on dashboard

* draft option not visible to first timer

* updating bower

* debug1

* removing debug statement

* button view

* view 2

* normal

* generate path added

* publish privil update

* code climate

* displaying comment with status1 only

* coauthor can view draft

* test correction

* button text change to save if draft

* fixture addition and 1 test

* tests , fixtures and minor changes

* test addition

* codeclimate 1

* codeclimate 2

* codeclimate 3

* minor fixes

* enable method=post for data-url image upload at /post (publiclab#2675)

* enable method=post for data-url image upload at /post

* Update editor_controller.rb

* Update editor_controller.rb

* Fixed first part of Issue publiclab#2352 Sorting headers added in wiki index page (publiclab#2353)

* sorting headers added in wiki index page

* replaced sorting header icon

* Improved translate widget (publiclab#2553)

* enhanced translate widget

* changed title formatting of widget

* Fix the clone command (publiclab#2766)

* List subscription change (publiclab#2767)

* Add sidekiq gem (publiclab#2738)

* added resque gem

* made changes for resqu installation

* added sidekiq gem

* minor changes

* modified docker-compose.yml for redis

* minor changes

* resolve conflicts

* Place tag detection and replacing "-" with "" (publiclab#2734)

* Place tag detection and replacing "-" with ""

* Javascript changed

* Geocode method added

* Tweaks

* Tweaks

* Tweaks

* Tweaks 2

* Tweaks 3

* Update Gemfile.lock

* Climate fix

* add geocoded tags

* Tweaks

* Block shift and callback to onComplete

* onComplete binded with ajax

* place in starting of tag detection

* Tweaks

* make descriptive tag links move to bottom of page (publiclab#2770)

* skylight config (publiclab#2773)

* Reply to comment by email feature (publiclab#2669)

* Added mailman script

* Added migration file for adding comment_via column to comment table

* Added reverse_markdown gem for converting html to markdown format

* Added migration file for adding message_id column to comment table

* Added function to handle received mail to create comment

* Added icon for comment added via email to distinguish between the normal comment and reply by email comment

* Added node_id in Mailer subjects to be used in reply by email feature

* Minor changes

* Updated schema.rb.example file

* Improved tests

* Added migrations

* Added migrations

* Added migrations

* Corrected tests

* Added enviroment variable for server address

* Added sql sphefic conditions

* Unwanted changes in schema.rb.example file is removed

* Gem added

* Log file is moved to public folder

* Corrected tests

* forward-date timestamps

* Rename 20180605190014_add_message_id_column_to_comments.rb to 20180605010014_add_message_id_column_to_comments.rb

* Update schema.rb.example

* Added whenever cron update command in Makefile for redeploy-container (publiclab#2780)

* Fix rss images and email images (publiclab#2784)

* Fix rss images and email images

* Update rss.rss.builder

* Update rss_for_tagged_with_author.rss.builder

* Update rss.rss.builder

* Update rss.rss.builder

* Update notify_node_creation.html.erb

* Rails 5.0 upgrade (publiclab#2726) (publiclab#2783)

* Rails 5.0 upgrade (publiclab#2726)

* Upgraded the .gitignore according to rails diff

* Initial Gemfile update

* Update README.md

* Showing message at the top of upgrade page (publiclab#2713)

* added an upgrade alert tag

* Additional questions page tweak (publiclab#2721)

* added the tag to determine which upgrade is listed on the website

* changed regex back

* added an upgrade alert tag

* added the tag to determine which upgrade is listed on the website

* changed regex back

* added upgrade after pull and rebase master

* Upgrade to Rails 5

* Uncommented composite_primary_key gem

* Removed the dual occurence of rails_autolink

* Update readme installation, fixes publiclab#2729 (publiclab#2730)

Updates the readme to change the installation instructions, fixes publiclab#2729

* Commented activerecord-tableless

* Draft display on Dashboard (publiclab#2666)

* draft display on dashboard

* moderator file view permitted

* checking

* fix

* test fix

* Added and modified few config files according to railsdiff.org

* Removed mass_assignment_sanitizer

* Removed composite primary key gem

* Removed all attr_accessible in all models

* Added composite_primary_key gem again

* Downgraded rails and removed few attr_accessible commands

* Added strong parameters to the controllers

* Added strong parameters gem and also include params.require inside private methods

* Added strongparameters.rb file to initializers folder

* Removed unnecessary strong_parameter functions

* Removed some errors

* Changed test command temporarily in .travis.yml

* Corrected config/puma.rb file with adding some assets

* Added all the config.precompile files in one line

* Removed error of problem in updating of user profile

* Removed the error while creating a user

* Removed error RecordNotFound: Couldn't find Node with 'nid'=

* Removed some errors related to ids

* Removed comment.reload in comment_controller_test

* Track Dockerfiles accross instances. (publiclab#2593)

* Track Dockerfiles accross instances.

* Specify jessie as base

* Add commands to build&deploy container with Makefile. (publiclab#2746)

* Added Sample Cron Job to check working of Whenever Gem (publiclab#2715)

*  Added Sample Cron Job to test Whenever Gem

* Added make targets for deployment and cron service start

* Added make to image

* Tweak Makefile

* Fix cron starting command in Makefile

* Trim whitespace

* Explicitly set jessie as base container

* Fixed codeclimate issues

* Auto-set wiki slug (publiclab#2743)

* Added keyword arguments to the tag_model.rb

* changed the query statement in search method of node.rb

* Force removal of pid file (see
docker/compose#1393)

* Updated the tests due to change in arguments of search function in node.rb

* Removed all the failures from tag_controller_test.rb

* Changed the style of params in notes_controller_test.rb

* Removed all depreciation warnings related to notes_controller

* Removed all deprecation warnings related to image_controller and answers_controller

* Removed all deprecation warnings of like_controller and fixed syntax error of answer_controller_test.rb

* Removed all dep warnings of editor_controller and syntax error of like_controller_test.rb

* removed all errors of answer_controller and some errors of tag_controller.rb

* Removed all dep warnings of tag_controller_test.rb

* Removed several dep warnings

* Removed dep warnings of wiki_controller

* Removed dep warnings of talk_controller

* Removed dep warnings of legacy_controller_test.rb

* Removed some warnings related to comment_controller

* Removed the syntax errors

* Removed two failures regarding application/xml+rss

* Removed 2 failures due to wrong way of passing parameters in tests

* Removed 2 failures

* Fix params

* Remove deprecations

* Removed some dep warnings

* Remove deprecations

* Reverted to nothing => true

* Reverted to nothing => true

* Avoid rendering more than once in the same action

* Removed all dep warnings related to user_tags_controller_test

* Remove deprecation

* Removed Dep warnings

* Fix deprecation

* Replace before_filter

* Remove deprecation

* Remove deprecation

* Remove deprecation

* Remove deprecation

* Bump Ruby version to match Travis'

* Simplify email regex to work with Ruby 2.4.1

* Changed the ruby version in Dockerfile

* Remove deprecation

* Remove deprecation

* Removed the depreciation warning related to dynamic :controller and :action segment in routes

* Changed the default ActiveRecord to ApplicationRecord in models

* Clean Gemfile

* Reverted to ['nid'] in tag_controller_test.rb

* Changed the tests to rake test:all in .travis.yml

* Minor spacing correction in .travis.yml

* added a commit in application.js an application.css regarding the precompilation of files

* Added more indentation

* Small fixes

* Separated the rails test and jasmine and coveralls task

* Modified ['nid'] to ['node']['nid']

* Removed the extra puts in Rakefile

* Changed the serial of tests

* Added rake/testtask to Rakefile

* Removed puma

* Changed to ruby 2.4.1-jessie

* Removed the whitelist_attributes command from config/application.rb

* Removed two failures due to old usage of params

* Fixed some new deprecation warnigs introduced

* fixes publiclab#2731 'add spam button,line 16 _answers.html.erb' (publiclab#2785)

* add spam button,line 16 _answers.html.erb

* changed comment.ids to answer.ids

* changed from comment path to answer

* changed comment.parent.path to answer.path

* some more cleanup to the button

* change answer.aid to answer id

* First timers recaptcha Environment Variables (publiclab#2786)

* Edited the if statement

* Added the env variables

* Edited ENV variable, and added fallback

* Fixed issue#2445 added both direction sort order (publiclab#2557)

* fixed issue#2445 added both direction sort order

* added function get_order_string in tags_controller

* Changed get to post (publiclab#2788)

* Update container definitions to match actual files used. (publiclab#2791)

* Update container definitions to match actual files used.

* Fix paths for running docker-compose.yml from subdir

* Fix reference to Dockerfile

* Reformat range stats page to table (publiclab#2792)

* Index page listing for UserTags per issue publiclab#2741. (publiclab#2753)

* Index page listing for UserTags per issue publiclab#2741.

* Changes per pull request checks.

* Removed debugging line.

* Added routes to reflect 'groups' naming convention for user_tags per pull request spec.

* Tests rewritten after rebase.

* Index page listing for UserTags per issue publiclab#2741.

* Changes per pull request checks.

* Removed debugging line.

* Added routes to reflect 'groups' naming convention for user_tags per pull request spec.

* Fix for test of sort by value.

* Update routes.rb for wiki update (publiclab#2804)

* Update routes.rb

* fixes

* integration tests for assets (publiclab#2806)

* integration tests for assets

* full assets included

* Update assets.rb

* Added routes to notes/edit (publiclab#2808)

* Added routes to notes/edit

* Removed redundant notes#edit and added get instead of post in edit actions

* Update routes.rb (publiclab#2810)

* Create OPENID.md

* fixing error in home_controller related to `group by` (publiclab#2794)

* Added group by note.nid

* correction

* Openid fix with post route and better alert texts (publiclab#2815)

* Added group by note.nid

* correction

* reworded openid requests and added post method for 2nd step

* adjust message

* Update openid_test.rb

* Update openid_test.rb

* Update openid_test.rb

* Update openid_test.rb

* Update Dangerfile (publiclab#2816)

* Update routes.rb to fix embeddable features (publiclab#2818)

* Update routes.rb

* Removed the apostrophe mismatch

* Added tests for embed in feature

* Delete route for notes (publiclab#2820)

* Documentation for the reply-by-email to comment feature (publiclab#2774)

* Added documentation for the reply-by-email to comment feature

* Added documentation for the reply-by-email to comment feature

* Added documentation for the reply-by-email to comment feature

* Added documentation for the reply-by-email to comment feature

* Re-order comment options and messages (publiclab#2834)

* Update _comment.html.erb

* Update _comment.html.erb

* encoding issue resolved for migrating DrupalUsers to User records (publiclab#2257)

* encoding issue solved

fixes publiclab#2209

* minor changes

* Rename 20180206161706_add_user_for_orphaned_drupal_user.rb to 20180614000000_add_user_for_orphaned_drupal_user.rb

* resolves issue 2520 (publiclab#2831)

* Emoji autocomplete (publiclab#2832)

* basic emoji autocomplete

* minor changes

* minor tweaks

* code climate fixes

* minor change

* changes

* remove unnecessary style

* Fix parent powertags for wikis like /barnraising (publiclab#2844)

* application.yml added

* Views removed

* Application.yml removed

* application removed

* Docker changes

* sign up page removed
  • Loading branch information
SidharthBansal authored and jywarren committed Jun 20, 2018
1 parent 7ef7c9d commit 1a54643
Show file tree
Hide file tree
Showing 22 changed files with 442 additions and 81 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ production.db
test.db
solr/*
test/reports/

!config/application.yml
# Ignore NPM
node_modules
.byebug_history
5 changes: 5 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -186,4 +186,9 @@ def redirect_old_urls
redirect_to @node.path, status: :moved_permanently
end
end

def signed_in?
!!current_user
end

end
179 changes: 118 additions & 61 deletions app/controllers/user_sessions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,75 +6,132 @@ def new
end

def create
params[:user_session][:username] = params[:openid] if params[:openid] # second runthrough must preserve username
username = params[:user_session][:username] if params[:user_session]
@user = User.find_by(username: username)
auth = request.env['omniauth.auth']
if auth
# Find an identity here
@identity = UserTag.find_with_omniauth(auth)

# try finding by email, if that exists
if @user.nil? && !User.where(email: username).empty?
@user = User.find_by(email: username)
params[:user_session][:username] = @user.username
end

if @user.nil?
flash[:warning] = "There is nobody in our system by that name, are you sure you have the right username?"
redirect_to '/login'
elsif params[:user_session].nil? || @user&.drupal_user&.status == 1
# an existing Rails user
if params[:user_session].nil? || @user
if @user&.crypted_password.nil? # the user has not created a pwd in the new site
params[:user_session][:openid_identifier] = 'https://old.publiclab.org/people/' + username + '/identity' if username
params[:user_session].delete(:password)
params[:user_session].delete(:username)
params[:openid] = username # pack up username for second runthrough
if signed_in?
if @identity.nil?
# If no identity was found, create a brand new one here
@identity = UserTag.create_with_omniauth(auth, current_user.id)
# The identity is not associated with the current_user so lets
# associate the identity
@identity.user = current_user
@identity.save
redirect_to root_url, notice: "Successfully linked to your account!"
elsif @identity.user == current_user
# User is signed in so they are trying to link an identity with their
# account. But we found the identity and the user associated with it
# is the current user. So the identity is already associated with
# this user. So let's display an error message.
redirect_to root_url, notice: "Already linked to your account!"
else
# User is signed in so they are trying to link an identity with their
# account. But we found the identity and a different user associated with it
# ,which is not the current user. So the identity is already associated with
# that user. So let's display an error message.
redirect_to root_url, notice: "Already linked to another account!"
end
@user_session = UserSession.new(username: params[:user_session][:username],
password: params[:user_session][:password],
remember_me: params[:user_session][:remember_me])
saved = @user_session.save do |result|
if result
# replace this with temporarily saving pwd in session,
# and automatically saving it in the user record after login is completed
if current_user.crypted_password.nil? # the user has not created a pwd in the new site
flash[:warning] = I18n.t('user_sessions_controller.create_password_for_new_site')
redirect_to '/profile/edit'
else
flash[:notice] = I18n.t('user_sessions_controller.logged_in')
if session[:openid_return_to] # for openid login, redirects back to openid auth process
return_to = session[:openid_return_to]
session[:openid_return_to] = nil
redirect_to return_to
elsif session[:return_to]
return_to = session[:return_to]
session[:return_to] = nil
redirect_to return_to
elsif params[:return_to]
redirect_to params[:return_to]
else # not signed in
if @identity&.user.present?
# The identity we found had a user associated with it so let's
# just log them in here
UserSession.create( @identity.user)
redirect_to root_url, notice: "Signed in!"
else #identity does not exist so we need to either create a user with identity OR link identity to existing user
if User.where(email: auth["info"]["email"]).empty?
#Create a new user as email provided is not present in PL database
user = User.create_with_omniauth(auth)
@identity = UserTag.create_with_omniauth(auth, user.id)
key = user.generate_reset_key
# send key to user email
PasswordResetMailer.reset_notify(user, key).deliver_now unless user.nil? # respond the same to both successes and failures; security
redirect_to root_url, notice: "You have successfully signed in. Please change your password via a link sent to you via a mail"
else #email exists so link the identity with existing user and log in the user
user = User.where(email: auth["info"]["email"])
# If no identity was found, create a brand new one here
@identity = UserTag.create_with_omniauth(auth, user.ids.first)
# The identity is not associated with the current_user so lets
# associate the identity
@identity.save
#log in them
UserSession.create( @identity.user)
redirect_to root_url, notice: "Successfully linked to your account!"
end
end
end
else
params[:user_session][:username] = params[:openid] if params[:openid] # second runthrough must preserve username
username = params[:user_session][:username] if params[:user_session]
@user = User.find_by(username: username)

# try finding by email, if that exists
if @user.nil? && !User.where(email: username).empty?
@user = User.find_by(email: username)
params[:user_session][:username] = @user.username
end

if @user.nil?
flash[:warning] = "There is nobody in our system by that name, are you sure you have the right username?"
redirect_to '/login'
elsif params[:user_session].nil? || @user&.drupal_user&.status == 1
# an existing Rails user
if params[:user_session].nil? || @user
if @user&.crypted_password.nil? # the user has not created a pwd in the new site
params[:user_session][:openid_identifier] = 'https://old.publiclab.org/people/' + username + '/identity' if username
params[:user_session].delete(:password)
params[:user_session].delete(:username)
params[:openid] = username # pack up username for second runthrough
end
@user_session = UserSession.new(username: params[:user_session][:username],
password: params[:user_session][:password],
remember_me: params[:user_session][:remember_me])
saved = @user_session.save do |result|
if result
# replace this with temporarily saving pwd in session,
# and automatically saving it in the user record after login is completed
if current_user.crypted_password.nil? # the user has not created a pwd in the new site
flash[:warning] = I18n.t('user_sessions_controller.create_password_for_new_site')
redirect_to '/profile/edit'
else
redirect_to '/dashboard'
flash[:notice] = I18n.t('user_sessions_controller.logged_in')
if session[:openid_return_to] # for openid login, redirects back to openid auth process
return_to = session[:openid_return_to]
session[:openid_return_to] = nil
redirect_to return_to
elsif session[:return_to]
return_to = session[:return_to]
session[:return_to] = nil
redirect_to return_to
elsif params[:return_to]
redirect_to params[:return_to]
else
redirect_to '/dashboard'
end
end
else
# Login failed; probably bad password.
# Errors will display on login form:
render action: 'new'
end
else
# Login failed; probably bad password.
# Errors will display on login form:
render action: 'new'
end
else # not a native user
if !DrupalUser.find_by(name: username).nil?
# this is a user from the old site who hasn't registered on the new site
redirect_to controller: :users, action: :create, user: { openid_identifier: username }
else # totally new user!
flash[:warning] = I18n.t('user_sessions_controller.sign_up_to_join')
redirect_to '/signup'
end
end
else # not a native user
if !DrupalUser.find_by(name: username).nil?
# this is a user from the old site who hasn't registered on the new site
redirect_to controller: :users, action: :create, user: { openid_identifier: username }
else # totally new user!
flash[:warning] = I18n.t('user_sessions_controller.sign_up_to_join')
redirect_to '/signup'
end
elsif params[:user_session].nil? || @user&.drupal_user&.status == 5
flash[:error] = I18n.t('user_sessions_controller.user_has_been_moderated', username: @user.username).html_safe
redirect_to '/'
else
flash[:error] = I18n.t('user_sessions_controller.user_has_been_banned', username: @user.username).html_safe
redirect_to '/'
end
elsif params[:user_session].nil? || @user&.drupal_user&.status == 5
flash[:error] = I18n.t('user_sessions_controller.user_has_been_moderated', username: @user.username).html_safe
redirect_to '/'
else
flash[:error] = I18n.t('user_sessions_controller.user_has_been_banned', username: @user.username).html_safe
redirect_to '/'
end
end

Expand Down
8 changes: 4 additions & 4 deletions app/controllers/user_tags_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,13 @@ def create

unless exist
user_tag = user.user_tags.build(value: name)
if tagname.split(':')[0] == "oauth-facebook"
if tagname.split(':')[1] == "facebook"
@output[:errors] << "This tag is used for associating a Facebook account. <a href='https://publiclab.org/wiki/oauth'>Click here to read more </a>"
elsif tagname.split(':')[0] == "oauth-github"
elsif tagname.split(':')[1] == "github"
@output[:errors] << "This tag is used for associating a Github account. <a href='https://publiclab.org/wiki/oauth'>Click here to read more </a>"
elsif tagname.split(':')[0] == "oauth-google"
elsif tagname.split(':')[1] == "google_oauth2"
@output[:errors] << "This tag is used for associating a Google account. <a href='https://publiclab.org/wiki/oauth'>Click here to read more </a>"
elsif tagname.split(':')[0] == "oauth-twitter"
elsif tagname.split(':')[1] == "twitter"
@output[:errors] << "This tag is used for associating a Twitter account. <a href='https://publiclab.org/wiki/oauth'>Click here to read more </a>"
elsif user_tag.save
@output[:saved] << [name, user_tag.id]
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def list
.where('rusers.role = ?', params[:id])
.where('rusers.status = 1')
.page(params[:page])

elsif @tagname_param
@users = User.where(id: UserTag.where(value: @tagname_param).collect(&:uid))
.page(params[:page])
Expand Down
8 changes: 4 additions & 4 deletions app/models/node.rb
Original file line number Diff line number Diff line change
Expand Up @@ -861,13 +861,13 @@ def can_tag(tagname, user, errors = false)
errors ? I18n.t('node.only_admins_can_lock') : false
elsif tagname.split(':')[0] == 'redirect' && Node.where(slug: tagname.split(':')[1]).length <= 0
errors ? I18n.t('node.page_does_not_exist') : false
elsif tagname.split(':')[0] == "oauth-facebook"
elsif tagname.split(':')[1] == "facebook"
errors ? "This tag is used for associating a Facebook account. <a href='https://publiclab.org/wiki/oauth'>Click here to read more </a>" : false
elsif tagname.split(':')[0] == "oauth-github"
elsif tagname.split(':')[1] == "github"
errors ? "This tag is used for associating a Github account. <a href='https://publiclab.org/wiki/oauth'>Click here to read more </a>" : false
elsif tagname.split(':')[0] == "oauth-google"
elsif tagname.split(':')[1] == "google_oauth2"
errors ? "This tag is used for associating a Google account. <a href='https://publiclab.org/wiki/oauth'>Click here to read more </a>" : false
elsif tagname.split(':')[0] == "oauth-twitter"
elsif tagname.split(':')[1] == "twitter"
errors ? "This tag is used for associating a Twitter account. <a href='https://publiclab.org/wiki/oauth'>Click here to read more </a>" : false
else
true
Expand Down
18 changes: 18 additions & 0 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -414,4 +414,22 @@ def self.contributor_count_for(start_time,end_time)
contributors
end

def self.create_with_omniauth(auth)
#email prefix is part of email before @ with periods replaced with underscores
#generate a 2 digit alphanumeric number and append it at the end of email-prefix
charset = Array('A'..'Z') + Array('a'..'z') + Array(0..9)
email_prefix = auth["info"]["email"].gsub('.','_').split('@')[0]
while(!User.where(username: email_prefix).empty?)
email_prefix = auth["info"]["email"].gsub('.','_').split('@')[0] + Array.new(2) { charset.sample }.join
end
puts(auth)
create! do |user|
user.username = email_prefix
user.email = auth["info"]["email"]
user.password = auth["uid"]
user.password_confirmation = auth["uid"]
user.save!
end
end

end
11 changes: 10 additions & 1 deletion app/models/user_tag.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ class UserTag < ApplicationRecord

validates :value, presence: :true
validates :value, format: { with: /\A[\w\.:-]*\z/, message: 'can only include letters, numbers, and dashes' }

validates_uniqueness_of :value, :scope => :uid
before_save :preprocess

def preprocess
Expand All @@ -18,4 +18,13 @@ def name
self.value
end

def self.find_with_omniauth(auth)
find_by(value: "oauth:" + auth['provider'] + ":" + auth['uid'])
end

def self.create_with_omniauth(auth, uid)
create(value: "oauth:" + auth['provider'] + ":" + auth['uid'],
uid: uid)
end

end
6 changes: 3 additions & 3 deletions app/views/layouts/_header.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@

<ul class="dropdown-menu">
<li><a href="/events">Attend an event</a></li>
<li><a href="/chat">Chat online</a></li>
<li><a href="/questions">Ask a question</a></li>
<li><a href="/chat">Chat online</a></li>
<li><a href="/questions">Ask a question</a></li>
<li><a href="/tags">Find a topic you care about</a></li>
<li><a href="/requests">Respond to a request</a></li>
<li><a href="/dashboard">Browse recent research</a></li>
<li><a href="/methods">Discover methods</a></li>
<li><a href="/kits">Contribute a kit</a></li>
<li><a href="/kits">Contribute a kit</a></li>
<% if !current_user %>
<li><a href="/signup">Create an account</a></li>
<% end %>
Expand Down
6 changes: 4 additions & 2 deletions app/views/user_sessions/new.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<%= f.password_field :password, { tabindex: 2, class: 'form-control', id: 'password-signup' } %>

</div>

<input type="hidden" name="return_to" value="<%= params[:return_to] %>" />

<div class="checkbox">
Expand All @@ -31,10 +31,12 @@

<div class="input-group-inline">

<button class="btn btn-primary btn-lg" type="submit" tabindex="3"><%= t('user_sessions.new.log_in') %></button>
<button class="btn btn-primary btn-lg" type="submit" tabindex="3"><%= t('user_sessions.new.log_in') %></button>
<a class="btn btn-default btn-lg" href="/signup" tabindex="4"><%= t('user_sessions.new.sign_up') %></a>

</div>
<br>


<br />
<p style="color: #888;"><%= raw t('user_sessions.new.reset_by_clicking_here', :url1 => "/reset/") %></p>
Expand Down
2 changes: 1 addition & 1 deletion app/views/users/edit.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
<hr />

<%= render 'form' %>

</div>
20 changes: 20 additions & 0 deletions config/environments/test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,24 @@
host: 'www.example.com'
}


OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:google_oauth2] = OmniAuth::AuthHash.new({
'provider' => 'google_oauth2',
'uid' => '1357908642',
'info' => {
'name' => 'sidharth bansal',
'email' => 'bansal.sidharth309@gmail.com'
}
})

OmniAuth.config.mock_auth[:google_oauth2_2] = OmniAuth::AuthHash.new({
'provider' => 'google_oauth2',
'uid' => '1357908642',
'info' => {
'name' => 'jeff',
'email' => 'jeff@pxlshp.com'
}
})

end
6 changes: 4 additions & 2 deletions config/initializers/omniauth.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#this file is used to store the variable needed for omniauth login and signup
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, ENV["google_app_key"],ENV["google_app_secret"] , skip_jwt: true
provider :facebook, ENV["APP_ID"],ENV["APP_SECRET"] , skip_jwt: true
#the provider is google_oauth2 and the app-key of google developers app is stored in OAUTH_GOOGLE_APP_KEY
#the app-secret of google developers app is stored in variable OAUTH_GOOGLE_APP_SECRET
provider :google_oauth2, ENV["OAUTH_GOOGLE_APP_KEY"],ENV["OAUTH_GOOGLE_APP_SECRET"] , skip_jwt: true
end
3 changes: 2 additions & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,7 @@
# This is a legacy wild controller route that's not recommended for RESTful applications.
# Note: This route will make all actions in every controller accessible via GET requests.
#handling omniauth callbacks
match '/auth/:provider/callback', to: 'sessions#create', via: [:get, :post]
match '/auth/:provider/callback', to: 'user_sessions#create', via: [:get, :post]
get 'auth/failure', to: redirect('/')

end
Loading

0 comments on commit 1a54643

Please sign in to comment.