diff options
Diffstat (limited to 'rails-backend/app/controllers/api/v1/auth_controller.rb')
| -rw-r--r-- | rails-backend/app/controllers/api/v1/auth_controller.rb | 89 |
1 files changed, 25 insertions, 64 deletions
diff --git a/rails-backend/app/controllers/api/v1/auth_controller.rb b/rails-backend/app/controllers/api/v1/auth_controller.rb index cfcb253..a5dfe7c 100644 --- a/rails-backend/app/controllers/api/v1/auth_controller.rb +++ b/rails-backend/app/controllers/api/v1/auth_controller.rb @@ -5,97 +5,46 @@ class Api::V1::AuthController < ApplicationController class << self end + # returns data about the user that is logged in + # e.g username def data if !cookies[:session].nil? - puts "Logged in" - puts cookies[:session] - #render json: Api::V1::AuthController.user_table[cookies[:session]] result = User.find_by(access_token_digest: cookies[:session]) render json: result else - puts "Not logged in" render json: { info: "Not logged in" }, status: 401 end end + + # user logs in through github + # github redirects them to this endpoint with the token in the url as query params + # we need to use this token to exchange with github for user info(e.g username) def callback - # user logs in through github - # github redirects them to this endpoint with the token in the url as query params - # we need to use this token to exchange with github for user info(i.e username) - #puts "Code: #{params[:code]}" # this is the github token - #puts ENV["GITHUB_CLIENT_SECRET"] - #puts ENV["GITHUB_CLIENT_ID"] access_token = get_access_token(params[:code]) user_data = JSON.parse(get_github_user_data(access_token)) - #puts "------------------------- USER DATA: ------------------------- " - #pp user_data id = user_data['id'].to_s - #puts "id: #{id}, at: #{access_token}" access_token_digest = BCrypt::Password.create(access_token) - #cookies[:session] = access_token_digest cookies[:session] = { value: access_token_digest, - #domain: :all, - #same_site: :none, - #secure: true + secure: true } - #user_params = { - # # access_token_digest: hashed_token, - # user_data: user_data - #} - #puts "USER DATA HERE NERD" - #puts user_data.class user = User.find_or_create_by(identifier: id) user.user_data = user_data user.access_token_digest = access_token_digest user.user_name = user_data["login"] user.save - #redirect_to 'http://localhost:5173/', allow_other_host: true redirect_to "#{ENV['ROOT_DOMAIN']}/closewindow", allow_other_host: true end + def logout - if !cookies[:session].nil? - puts cookies[:session] - cookies.delete :session - else - puts "cookies not found" - end - #cookies.delete :session, domain: 'localhost' - #redirect_to "#{ENV['ROOT_DOMAIN']}", allow_other_host: true + cookies.delete :session end private - def get_github_user_data(access_token) - uri = URI("https://api.github.com/user") - headers = { Authorization: "Bearer #{access_token}" } - response = Net::HTTP.get( - uri, - headers - ) - puts "Response Body" - puts response - #if response.is_a?(Net::HTTPSuccess) - #if response.body.nil? - result = response - if !result["error"].nil? - puts "Error: #{result["error"]}" - puts response - # we had an error - # TODO - else - puts "huh?" if result.nil? - return result - end - #else - # puts "Error(body nil)" - # something went wrong? - # TODO - #end - end - + # used by callback method def get_access_token(github_user_code) uri = URI("https://github.com/login/oauth/access_token?client_id=#{ENV["GITHUB_CLIENT_ID"]}&client_secret=#{ENV["GITHUB_CLIENT_SECRET"]}&code=#{github_user_code}") - #uri = URI('https://github.com/login/oauth/access_token') headers = {Accept: 'application/json'} response = Net::HTTP.post( uri, @@ -109,9 +58,21 @@ class Api::V1::AuthController < ApplicationController else return result["access_token"] end - else - # something went wrong? - # TODO + end + end + # used by callback method + def get_github_user_data(access_token) + uri = URI("https://api.github.com/user") + headers = { Authorization: "Bearer #{access_token}" } + response = Net::HTTP.get( + uri, + headers + ) + puts "Response Body" + puts response + result = response + if result["error"].nil? + return result end end end |
