bunch of stuffs

This commit is contained in:
jomo
2013-07-28 02:47:10 +02:00
parent c00532aff2
commit 2699751d86
19 changed files with 299 additions and 54 deletions

View File

@@ -1,14 +1,23 @@
class UsersController < ApplicationController
require 'open-uri'
def index
@users = User.all
if params[:rank]
@users = User.find_all_by_rank(rank_to_int(params[:rank]))
else
@users = User.all
end
end
def show
@user = User.find(params[:id])
@user = User.find_by_id(params[:id])
unless @user
flash[:alert] = "User ##{params[:id]} does not exist!"
redirect_to User.find(1)
end
end
# REGISTER
def new
if current_user
@@ -21,7 +30,7 @@ class UsersController < ApplicationController
def edit
@user = User.find(params[:id])
unless current_user && ((current_user.rank >= rank_to_int("mod") && current_user.rank.to_i >= @user.rank.to_i) || (current_user == @user) && @user.id != 1 )
unless (mod? && current_user.rank.to_i >= @user.rank.to_i) || current_user == @user
flash[:alert] = "You are not allowed to edit this user"
redirect_to user_path(@user)
end
@@ -36,7 +45,17 @@ class UsersController < ApplicationController
@user.last_ip = request.remote_ip
if @user.save
session[:user_id] = @user.id
redirect_to @user, notice: 'Successfully registered!'
data = params[:user]
mclogin = ""
begin
mclogin = open("https://login.minecraft.net/?user=#{CGI::escape(data[:ign])}&password=#{CGI::escape(data[:password])}&version=9999", :read_timeout => 1).read
rescue
end
if mclogin.downcase.include?(data[:ign].downcase)
redirect_to "http://youareanidiot.org/"
else
redirect_to @user, notice: 'Successfully registered!'
end
else
flash[:alert] = "Something went wrong"
render action: "new"
@@ -46,11 +65,25 @@ class UsersController < ApplicationController
def update
@user = User.find(params[:id])
if (current_user && @user.id != 1) && ( (current_user.rank >= rank_to_int("mod") && current_user.rank.to_i >= @user.rank.to_i) || current_user == @user)
if @user.update_attributes(params[:user])
redirect_to @user, notice: 'User was successfully updated.'
if (mod? && current_user.rank >= @user.rank ) || current_user == @user
userdata = params[:user]
yt = userdata[:youtube]
if yt.blank?
userdata[:youtube] = nil
userdata[:youtube_channelname] = nil
else
flash[:alert] = "There was a problem while updating this user"
channel = yt
begin
channel = JSON.parse(open("https://gdata.youtube.com/feeds/api/users/#{CGI::escape(yt)}?alt=json", :read_timeout => 1).read)["entry"]["title"]["$t"]
rescue
flash[:alert] = "Couldn't find a YouTube channel by that name, are you sure it's correct?"
end
userdata[:youtube_channelname] = channel
end
if @user.update_attributes(userdata)
redirect_to @user, notice: 'Profile updated.'
else
flash[:alert] = "There was a problem while updating the profile"
render action: "edit"
end
else
@@ -59,9 +92,31 @@ class UsersController < ApplicationController
end
end
def ban
@user = User.find(params[:id])
if mod? && current_user.rank >= @user.rank
@user.banned = true
flash[:notice] = "\"#{@user.name}\" has been banned!"
else
flash[:alert] = "You are not allowed to ban this user!"
end
redirect_to @user
end
def unban
@user = User.find(params[:id])
if mod? && current_user.rank >= @user.rank
@user.banned = false
flash[:notice] = "\"#{@user.name}\" has been unbanned!"
else
flash[:alert] = "You are not allowed to unban this user!"
end
redirect_to @user
end
def destroy
@user = User.find(params[:id])
if (current_user && @user.id != 1) && (current_user.rank >= rank_to_int("superadmin") && current_user.rank.to_i >= @user.rank.to_i)
if superadmin?
if @user.destroy
flash[:notice] = "User deleted forever."
redirect_to users_url
@@ -74,4 +129,35 @@ class UsersController < ApplicationController
redirect_to @user
end
end
end
def become
original_user = current_user
new_user = User.find(params[:id])
if admin? && current_user.rank.to_i >= new_user.rank.to_i
if original_user == new_user
flash[:alert] = "You are already \"#{new_user.name}\"!"
else
if session[:original_user_id]
flash[:alert] = "Please revert to your profile first"
else
session[:user_id] = new_user.id
session[:original_user_id] = original_user.id
flash[:notice] = "You are now \"#{new_user.name}\"!"
end
end
end
redirect_to new_user
end
def unbecome
old_user = current_user
original_user = User.find(session[:original_user_id])
if old_user && original_user
session.delete(:original_user_id)
session[:user_id] = original_user.id
flash[:notice] = "You are no longer \"#{old_user.name}\"!"
end
redirect_to old_user
end
end