diff options
| author | realtradam <[email protected]> | 2024-05-02 20:54:36 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2024-05-02 20:54:36 -0400 |
| commit | a97531e77e9e3f0e391b2504fcb278cabc2b901e (patch) | |
| tree | b8cd2f6094b66a574a5f1f6dda68f5c852a8c105 /app/controllers/api/v1/auth_controller.rb | |
| parent | 3108882fd50308ed1e3d0a587ce2709aa12a6d9e (diff) | |
| download | gameHolster-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.rb | 65 |
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 |
