summaryrefslogtreecommitdiffhomepage
path: root/app/controllers/api/v1/auth_controller.rb
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2024-05-02 20:54:36 -0400
committerrealtradam <[email protected]>2024-05-02 20:54:36 -0400
commita97531e77e9e3f0e391b2504fcb278cabc2b901e (patch)
treeb8cd2f6094b66a574a5f1f6dda68f5c852a8c105 /app/controllers/api/v1/auth_controller.rb
parent3108882fd50308ed1e3d0a587ce2709aa12a6d9e (diff)
downloadgameHolster-a97531e77e9e3f0e391b2504fcb278cabc2b901e.tar.gz
gameHolster-a97531e77e9e3f0e391b2504fcb278cabc2b901e.zip
finish inital auth
Diffstat (limited to 'app/controllers/api/v1/auth_controller.rb')
-rw-r--r--app/controllers/api/v1/auth_controller.rb65
1 files changed, 43 insertions, 22 deletions
diff --git a/app/controllers/api/v1/auth_controller.rb b/app/controllers/api/v1/auth_controller.rb
index 2688074..32f33dc 100644
--- a/app/controllers/api/v1/auth_controller.rb
+++ b/app/controllers/api/v1/auth_controller.rb
@@ -5,10 +5,16 @@ class Api::V1::AuthController < ApplicationController
@user_table ||= {}
end
end
+
def data
if !cookies[:session].nil?
puts cookies[:session]
- render json: Api::V1::AuthController.user_table[cookies[:session]]
+ #render json: Api::V1::AuthController.user_table[cookies[:session]]
+ result = User.find_by(access_token_digest: cookies[:session])
+ result[:user_data] = result[:user_data]
+ puts "A PREFIX SO WE CAN SEE IT"
+ pp result
+ render json: result
else
puts "Not logged in"
end
@@ -17,23 +23,38 @@ class Api::V1::AuthController < ApplicationController
# 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"]
+ #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 = get_github_user_data(access_token)
- puts "USER DATA:"
- pp user_data
- token = "#{user_data['id']}"
- hashed_token = OpenSSL::HMAC.hexdigest(ENV["ENC_ALGO"], ENV["ENC_KEY"], token + access_token)
+ 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}"
+
+ hashed_token = hash_token("#{access_token}")
Api::V1::AuthController.user_table[hashed_token] = user_data
- puts "Hashed Token: #{hashed_token}"
+ #puts "Hashed Token: #{hashed_token}"
cookies[:session] = hashed_token
+ user_params = {
+ access_token_digest: hashed_token,
+ salt: params[:code].to_s,
+ user_data: user_data
+ }
+ puts "USER DATA HERE NERD"
+ puts user_data.class
+ user = User.find_or_create_by(identifier: id)
+ user.update(user_params)
redirect_to '/'
end
private
+ def hash_token(token)
+ OpenSSL::HMAC.hexdigest(ENV["ENC_ALGO"], ENV["ENC_KEY"], token)
+ end
+
def get_github_user_data(access_token)
uri = URI("https://api.github.com/user")
headers = { Authorization: "Bearer #{access_token}" }
@@ -45,20 +66,20 @@ class Api::V1::AuthController < ApplicationController
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
+ 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
+ # something went wrong?
+ # TODO
#end
end