From 701461fa33c92ad5dbcec3f0e4418d2de552392f Mon Sep 17 00:00:00 2001 From: Ze Sheng Date: Fri, 4 Oct 2024 16:27:38 -0500 Subject: [PATCH] Fixed: now all user can logout and login many times. --- app/services/user_service.rb | 57 +++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/app/services/user_service.rb b/app/services/user_service.rb index 7a1fa768..16f96e21 100644 --- a/app/services/user_service.rb +++ b/app/services/user_service.rb @@ -1,36 +1,39 @@ # app/services/user_service.rb class UserService def self.find_or_create_user(auth) - uid = auth["uid"] - email = auth["info"]["email"] - names = auth["info"]["name"].split - first_name = names[0] - last_name = names[1..].join(" ") - - if Rails.env.test? - email_to_find = email.present? ? email : "spongey@tamu.edu" - user = UserRepository.find_by_email(email_to_find) - end - - unless user - user = UserRepository.create_user( - uid: uid, - email: email, - first_name: first_name, - last_name: last_name - ) - Role.create(user_id: user.id, role: "Member") - end - - user + uid = auth["uid"] + email = auth["info"]["email"] + names = auth["info"]["name"].split + first_name = names[0] + last_name = names[1..].join(" ") + + user = UserRepository.find_by_uid(uid) || UserRepository.find_by_email(email) + + unless user + user = UserRepository.create_user( + uid: uid, + email: email, + first_name: first_name, + last_name: last_name + ) + + if user.nil? || user.id.nil? + Rails.logger.error("User creation failed for email: #{email}") + raise "User creation failed" + end + + Role.create!(user_id: user.id, role: "Member") unless user.roles.exists? + end + + user end - + def self.find_user_by_id(id) - UserRepository.find_by_id(id) + UserRepository.find_by_id(id) end - + def self.fetch_all - UserRepository.fetch_all + UserRepository.fetch_all end - end +end \ No newline at end of file