From e887e3d1da511811dd5c7d3703ac1fc91a00ea6a Mon Sep 17 00:00:00 2001 From: jomo Date: Sun, 8 Feb 2015 00:32:52 +0100 Subject: [PATCH] update minecraft name changes automatically --- app/controllers/sessions_controller.rb | 13 ++++++++++++- app/helpers/users_helper.rb | 22 ++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index f901b39..0e12637 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -1,5 +1,7 @@ class SessionsController < ApplicationController + include UsersHelper + def new if current_user flash[:alert] = "You are already logged in!" @@ -19,8 +21,17 @@ class SessionsController < ApplicationController flash[:alert] = "You are banned!" else session[:user_id] = user.id - flash[:alert] = "Remember to validate your email! Your account may be deleted soon!" if !user.confirmed? flash[:notice] = "Logged in!" + + new_ign = fetch_name(user.uuid) + if new_ign.present? && new_ign != user.ign + user.name = new_ign if user.ign == user.name + user.ign = new_ign + user.save + flash[:notice] += " Your name has been changed to #{new_ign}!" + end + + flash[:alert] = "Remember to validate your email! Your account may be deleted soon!" if !user.confirmed? end else flash[:alert] = "You're doing it wrong!" diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index c4fd422..1747586 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -27,4 +27,26 @@ require "open-uri" yt end + def fetch_name(uuid) + uri = URI.parse("https://api.mojang.com/user/profiles/#{CGI.escape(uuid)}/names") + http = Net::HTTP.new(uri.host, uri.port) + http.open_timeout = 3 + http.read_timeout = 3 + http.use_ssl = true + + begin + response = http.get(uri) + if response.code == "200" + data = JSON.load(response.body) + return data.last["name"] + end + rescue => e + Rails.logger.error "----" + Rails.logger.error "Failed to get mojang profile for #{uuid}" + Rails.logger.error e.message + Rails.logger.error "----" + return nil + end + end + end \ No newline at end of file