another big commit :D
This commit is contained in:
@@ -1,9 +1,19 @@
|
||||
class ApplicationController < ActionController::Base
|
||||
protect_from_forgery
|
||||
|
||||
# force_ssl
|
||||
|
||||
helper :all
|
||||
include UsersHelper
|
||||
include ApplicationHelper
|
||||
|
||||
helper_method :current_user
|
||||
helper_method :disabled?
|
||||
helper_method :banned?
|
||||
helper_method :confirmed?
|
||||
helper_method :unconfirmed?
|
||||
helper_method :default?
|
||||
helper_method :donor?
|
||||
helper_method :mod?
|
||||
helper_method :admin?
|
||||
helper_method :superadmin?
|
||||
@@ -14,16 +24,42 @@ class ApplicationController < ActionController::Base
|
||||
@current_user ||= User.find_by_id(session[:user_id])
|
||||
end
|
||||
|
||||
#roles
|
||||
def disabled?
|
||||
!!(current_user && current_user.disabled?)
|
||||
end
|
||||
|
||||
def banned?
|
||||
!!(current_user && current_user.banned?)
|
||||
end
|
||||
|
||||
def unconfirmed?
|
||||
!!(current_user && current_user.unconfirmed?)
|
||||
end
|
||||
|
||||
#special one
|
||||
def confirmed?
|
||||
!!(current_user && current_user.confirmed?)
|
||||
end
|
||||
|
||||
def default?
|
||||
!!(current_user && current_user.default?)
|
||||
end
|
||||
|
||||
def donor?
|
||||
!!(current_user && current_user.donor?)
|
||||
end
|
||||
|
||||
def mod?
|
||||
!!(current_user && current_user.rank >= rank_to_int("mod"))
|
||||
!!(current_user && current_user.mod?)
|
||||
end
|
||||
|
||||
def admin?
|
||||
!!(current_user && current_user.rank >= rank_to_int("admin"))
|
||||
!!(current_user && current_user.admin?)
|
||||
end
|
||||
|
||||
def superadmin?
|
||||
!!(current_user && current_user.rank >= rank_to_int("superadmin"))
|
||||
!!(current_user && current_user.superadmin?)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -10,7 +10,7 @@ class BlogpostsController < ApplicationController
|
||||
end
|
||||
|
||||
def new
|
||||
if current_user && current_user.rank >= rank_to_int("mod")
|
||||
if mod?
|
||||
@post = Blogpost.new
|
||||
else
|
||||
flash[:alert] = "You are not allowed to create a new post!"
|
||||
@@ -20,19 +20,21 @@ class BlogpostsController < ApplicationController
|
||||
|
||||
def edit
|
||||
@post = Blogpost.find(params[:id])
|
||||
if current_user && ((current_user.rank >= rank_to_int("mod") && current_user.rank.to_i >= @post.user.rank.to_i) || (current_user == @edit.user))
|
||||
if mod?
|
||||
else
|
||||
flash[:alert] = "You are not allowed to update this post!"
|
||||
flash[:alert] = "You are not allowed to edit this post!"
|
||||
redirect_to @post
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
if mod?
|
||||
@post = Blogpost.new(params[:blogpost])
|
||||
@post.user = current_user
|
||||
@post.user_author = current_user
|
||||
if @post.save
|
||||
redirect_to @post, notice: 'Post has been created.'
|
||||
else
|
||||
flash[:alert] = @post.errors.first
|
||||
render action: "new"
|
||||
end
|
||||
else
|
||||
@@ -43,11 +45,12 @@ class BlogpostsController < ApplicationController
|
||||
|
||||
def update
|
||||
@post = Blogpost.find(params[:id])
|
||||
if current_user && ((current_user.rank >= rank_to_int("mod") && current_user.rank.to_i >= @post.user.rank.to_i) || (current_user == @post.user))
|
||||
if mod?
|
||||
if @post.update_attributes(params[:blogpost])
|
||||
redirect_to @post, notice: 'Post has been updated.'
|
||||
else
|
||||
flash[:alert] = "There was a problem while updating the post"
|
||||
raise @post.errors
|
||||
render action: "edit"
|
||||
end
|
||||
end
|
||||
@@ -55,7 +58,7 @@ class BlogpostsController < ApplicationController
|
||||
|
||||
def destroy
|
||||
@post = Blogpost.find(params[:id])
|
||||
if current_user && ((current_user.rank >= rank_to_int("mod") && current_user.rank.to_i >= @post.user.rank.to_i) || (current_user == @post.user))
|
||||
if mod?
|
||||
if @post.destroy
|
||||
flash[:notice] = "Post deleted!"
|
||||
else
|
||||
|
||||
@@ -2,8 +2,7 @@ class CommentsController < ApplicationController
|
||||
|
||||
def edit
|
||||
@comment = Comment.find(params[:id])
|
||||
if current_user && ((current_user.rank >= rank_to_int("mod") && current_user.rank.to_i >= @comment.user.rank.to_i) || (current_user == @comment.user))
|
||||
session[:return_to] = blogpost_path(@comment.blogpost)
|
||||
if mod? || @comment.author.is?(current_user)
|
||||
else
|
||||
flash[:alert] = "You are not allowed to edit this comment"
|
||||
redirect_to @comment.blogpost
|
||||
@@ -11,39 +10,43 @@ class CommentsController < ApplicationController
|
||||
end
|
||||
|
||||
def create
|
||||
if current_user
|
||||
if confirmed?
|
||||
params[:comment].slice!("content") if params[:comment]
|
||||
@comment = Comment.new(params[:comment])
|
||||
@comment.user_id = current_user.id
|
||||
@comment.user_author = current_user
|
||||
@comment.blogpost = Blogpost.find(params[:blogpost_id])
|
||||
if @comment.save
|
||||
redirect_to @comment.blogpost, notice: 'Comment created!'
|
||||
else
|
||||
flash[:alert] = @comment.errors.full_messages.first
|
||||
redirect_to blogpost_path(params[:blogpost_id])
|
||||
flash[:alert] = "Could not create comment."
|
||||
redirect_to Blogpost.find(params[:blogpost_id])
|
||||
end
|
||||
else
|
||||
flash[:alert] = "You are not allowed to create comments."
|
||||
redirect_to Blogpost.find(params[:blogpost_id])
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
@comment = Comment.find(params[:id])
|
||||
if current_user && ((current_user.rank >= rank_to_int("mod") && current_user.rank.to_i >= @comment.user.rank.to_i) || (current_user == @comment.user))
|
||||
if mod? || @comment.author.is?(current_user)
|
||||
params[:comment].slice!("content") if params[:comment]
|
||||
if @comment.update_attributes(params[:comment])
|
||||
flash[:notice] = "Comment updated!"
|
||||
redirect_to @comment.blogpost
|
||||
else
|
||||
flash[:alert] = "There was a problem while updating your comment"
|
||||
redirect_to session[:return_to]
|
||||
session.delete(:redirect_to)
|
||||
render action: "edit"
|
||||
end
|
||||
else
|
||||
flash[:alert] = "You are not allowed to edit this comment"
|
||||
redirect_to blogpost_path(params[:blogpost_id])
|
||||
redirect_to @comment.blogpost
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@comment = Comment.find(params[:id])
|
||||
if current_user && ((current_user.rank >= rank_to_int("mod") && current_user.rank.to_i >= @comment.user.rank.to_i) || (current_user == @comment.user))
|
||||
if mod? || @comment.author.is?(current_user)
|
||||
if @comment.destroy
|
||||
flash[:notice] = "Comment deleted!"
|
||||
else
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
class ForumgroupsController < ApplicationController
|
||||
|
||||
def index
|
||||
@groups = Forumgroup.all.sort_by{|s| s[:position]}
|
||||
end
|
||||
|
||||
def show
|
||||
redirect_to forumgroups_path + "#forum-#{params[:id]}"
|
||||
end
|
||||
end
|
||||
@@ -1,2 +1,11 @@
|
||||
class ForumsController < ApplicationController
|
||||
end
|
||||
def index
|
||||
redirect_to :forumgroups
|
||||
end
|
||||
|
||||
def show
|
||||
@forum = Forum.find(params[:id])
|
||||
@threads = @forum.forumthreads
|
||||
end
|
||||
|
||||
end
|
||||
6
app/controllers/forumthreads_controller.rb
Normal file
6
app/controllers/forumthreads_controller.rb
Normal file
@@ -0,0 +1,6 @@
|
||||
class ForumthreadsController < ApplicationController
|
||||
def index
|
||||
f = Forum.find(params[:id])
|
||||
redirect_to forum_path(f.forumgroup, f)
|
||||
end
|
||||
end
|
||||
@@ -19,7 +19,7 @@ class PaypalController < ApplicationController
|
||||
end
|
||||
|
||||
|
||||
protected
|
||||
protected
|
||||
def validate_IPN_notification(raw)
|
||||
uri = URI.parse('https://www.paypal.com/cgi-bin/webscr?cmd=_notify-validate')
|
||||
http = Net::HTTP.new(uri.host, uri.port)
|
||||
@@ -29,7 +29,7 @@ class PaypalController < ApplicationController
|
||||
http.use_ssl = true
|
||||
response = http.post(uri.request_uri, raw,
|
||||
'Content-Length' => "#{raw.size}",
|
||||
'User-Agent' => "Redstoner.com"
|
||||
'User-Agent' => "RedstonerServer, redstoner.com"
|
||||
).body
|
||||
end
|
||||
end
|
||||
@@ -1,10 +0,0 @@
|
||||
class ServercheckerController < ApplicationController
|
||||
def show
|
||||
|
||||
if mc_running?
|
||||
send_file "app/assets/images/on.png", :type => "image/png", :disposition => "inline"
|
||||
else
|
||||
send_file "app/assets/images/off.png", :type => "image/png", :disposition => "inline"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,21 +1,37 @@
|
||||
class SessionsController < ApplicationController
|
||||
require 'resolv'
|
||||
|
||||
def new
|
||||
if current_user
|
||||
redirect_to current_user
|
||||
flash[:alert] = "You are already logged in!"
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
user = User.find_by_email(params[:email])
|
||||
if user && user.authenticate(params[:password])
|
||||
user.last_ip = "#{request.remote_ip} | #{Resolv.getname(request.remote_ip)}"
|
||||
user.last_login = Time.now
|
||||
user.save
|
||||
if user.banned
|
||||
flash[:alert] = "You are banned!"
|
||||
redirect_to user
|
||||
unless current_user
|
||||
user = User.find_by_email(params[:email])
|
||||
if user && user.authenticate(params[:password])
|
||||
user.last_ip = "#{request.remote_ip} | #{Resolv.getname(request.remote_ip)}"
|
||||
user.last_login = Time.now
|
||||
user.save
|
||||
if user.disabled?
|
||||
flash[:alert] = "This user has been disabled!"
|
||||
redirect_to login_path
|
||||
elsif user.banned?
|
||||
flash[:alert] = "You are banned!"
|
||||
redirect_to user
|
||||
else
|
||||
session[:user_id] = user.id
|
||||
redirect_to root_path, :notice => "Logged in!"
|
||||
end
|
||||
else
|
||||
session[:user_id] = user.id
|
||||
redirect_to root_path, :notice => "Logged in!"
|
||||
flash[:alert] = "You're doing it wrong!"
|
||||
redirect_to login_path
|
||||
end
|
||||
else
|
||||
flash[:alert] = "You're doing it wrong!"
|
||||
redirect_to login_path
|
||||
redirect_to current_user
|
||||
flash[:alert] = "You are already logged in!"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
21
app/controllers/status_controller.rb
Normal file
21
app/controllers/status_controller.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
class StatusController < ApplicationController
|
||||
def show
|
||||
if params[:check]
|
||||
if params[:check].downcase == "minecraft"
|
||||
if port_open?("redstoner.com", 25565)
|
||||
send_file "app/assets/images/on.png", :type => "image/png", :disposition => "inline"
|
||||
else
|
||||
send_file "app/assets/images/off.png", :type => "image/png", :disposition => "inline"
|
||||
end
|
||||
elsif params[:check].downcase == "teamspeak"
|
||||
if port_open?("redstoner.com", 9987)
|
||||
send_file "app/assets/images/on.png", :type => "image/png", :disposition => "inline"
|
||||
else
|
||||
send_file "app/assets/images/off.png", :type => "image/png", :disposition => "inline"
|
||||
end
|
||||
else
|
||||
render :text => "invalid params"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -3,18 +3,23 @@ class UsersController < ApplicationController
|
||||
require 'open-uri'
|
||||
|
||||
def index
|
||||
if params[:rank]
|
||||
@users = User.find_all_by_rank(rank_to_int(params[:rank]))
|
||||
if params[:role]
|
||||
if params[:role].downcase == "staff"
|
||||
@users = User.all.select {|u| u.role >= Role.get(:mod) }
|
||||
else
|
||||
@users = User.find_all_by_role_id(Role.get(params[:role]))
|
||||
end
|
||||
else
|
||||
@users = User.all
|
||||
@users.shift() #Remove first user
|
||||
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)
|
||||
flash[:alert] = "User does not exist!"
|
||||
redirect_to users_path
|
||||
end
|
||||
end
|
||||
|
||||
@@ -22,15 +27,40 @@ require 'open-uri'
|
||||
def new
|
||||
if current_user
|
||||
flash[:notice] = "You are already signed up!"
|
||||
redirect_to user_path(current_user.id)
|
||||
redirect_to current_user
|
||||
else
|
||||
@user = User.new
|
||||
@user = User.new(role: Role.get(:unconfirmed))
|
||||
end
|
||||
end
|
||||
|
||||
def confirm
|
||||
if current_user
|
||||
@user = User.find(params[:id])
|
||||
code = params[:code]
|
||||
if @user && @user == current_user && code && @user.confirm_code == code
|
||||
if @user.role == Role.get(:unconfirmed)
|
||||
@user.role = Role.get :default
|
||||
@user.save
|
||||
flash[:notice] = "Registration confirmed."
|
||||
elsif @user.role < Role.get(:unconfirmed)
|
||||
flash[:alert] = "Your account has been banned or removed"
|
||||
else
|
||||
flash[:alert] = "Your account has already been confirmed!"
|
||||
end
|
||||
redirect_to @user
|
||||
else
|
||||
flash[:alert] = "Something is wrong with your confirmation code"
|
||||
redirect_to root_path
|
||||
end
|
||||
else
|
||||
flash[:alert] = "Please login"
|
||||
redirect_to login_path
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
@user = User.find(params[:id])
|
||||
unless (mod? && current_user.rank.to_i >= @user.rank.to_i) || current_user == @user
|
||||
unless (mod? && current_user.role >= @user.role) || current_user == @user
|
||||
flash[:alert] = "You are not allowed to edit this user"
|
||||
redirect_to user_path(@user)
|
||||
end
|
||||
@@ -41,23 +71,29 @@ require 'open-uri'
|
||||
flash[:notice] = "You are already signed up!"
|
||||
redirect_to current_user
|
||||
else
|
||||
@user = User.new(params[:user])
|
||||
@user = User.new(params[:user] ? params[:user].slice(:name, :ign, :email, :password, :password_confirmation) : {} )
|
||||
@user.role = Role.get :unconfirmed
|
||||
@user.confirm_code = SecureRandom.hex(16)
|
||||
@user.last_ip = request.remote_ip
|
||||
@user.last_login = Time.now
|
||||
if @user.save
|
||||
session[:user_id] = @user.id
|
||||
data = params[:user]
|
||||
mclogin = ""
|
||||
if uses_mc_password?(@user.ign, params[:user][:password])
|
||||
minecraftpw = true
|
||||
flash[:alert] = "Really? That's your Minecraft password!"
|
||||
end
|
||||
begin
|
||||
#check if this user is an idiot and uses his mc password.
|
||||
mclogin = open("https://login.minecraft.net/?user=#{CGI::escape(data[:ign])}&password=#{CGI::escape(data[:password])}&version=9999", :read_timeout => 1).read
|
||||
RedstonerMailer.register_mail(@user, minecraftpw).deliver
|
||||
RedstonerMailer.register_info_mail(@user, minecraftpw).deliver
|
||||
puts
|
||||
rescue
|
||||
puts "---"
|
||||
puts "WARNING: registration mail failed for user #{@user.name}, #{@user.email}"
|
||||
puts "---"
|
||||
flash[:alert] = "Registration mail failed. Please contact us in-game."
|
||||
end
|
||||
if mclogin.downcase.include?(data[:ign].downcase)
|
||||
redirect_to "http://youareanidiot.org/"
|
||||
else
|
||||
redirect_to edit_user_path(@user), notice: 'Successfully signed up!'
|
||||
end
|
||||
flash[:notice] = "Successfully signed up! Check your email!"
|
||||
redirect_to edit_user_path(@user)
|
||||
else
|
||||
flash[:alert] = "Something went wrong"
|
||||
render action: "new"
|
||||
@@ -67,38 +103,46 @@ require 'open-uri'
|
||||
|
||||
def update
|
||||
@user = User.find(params[:id])
|
||||
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
|
||||
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?"
|
||||
if (mod? && current_user.role >= @user.role ) || (@user.is?(current_user) && confirmed?)
|
||||
userdata = params[:user] ? params[:user].slice(:name, :ign, :role, :skype, :skype_public, :youtube, :twitter, :about, :password, :password_confirmation) : {}
|
||||
if userdata[:role]
|
||||
role = Role.find(userdata[:role])
|
||||
if (mod? && role <= current_user.role)
|
||||
userdata[:role] = role
|
||||
else
|
||||
#reset role
|
||||
userdata[:role] = @user.role
|
||||
end
|
||||
userdata[:youtube_channelname] = channel
|
||||
end
|
||||
unless userdata[:ign] && (mod? && current_user.role >= @user.role)
|
||||
#reset ign
|
||||
userdata[:ign] = @user.ign
|
||||
end
|
||||
if @user.youtube != userdata[:youtube]
|
||||
youtube = get_youtube(userdata[:youtube])
|
||||
userdata[:youtube] = youtube[:channel]
|
||||
userdata[:youtube_channelname] = youtube[:channel_name]
|
||||
flash[:alert] = "Couldn't find a YouTube channel by that name, are you sure it's correct?" unless youtube[:is_correct?]
|
||||
end
|
||||
if @user.update_attributes(userdata)
|
||||
redirect_to @user, notice: 'Profile updated.'
|
||||
flash[:notice] = 'Profile updated.'
|
||||
else
|
||||
raise @user.errors.inspect
|
||||
flash[:alert] = "There was a problem while updating the profile"
|
||||
render action: "edit"
|
||||
return
|
||||
end
|
||||
else
|
||||
flash[:alert] = "You are not allowed to edit this user"
|
||||
redirect_to @user
|
||||
end
|
||||
redirect_to @user
|
||||
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!"
|
||||
if mod? && current_user.role >= @user.role
|
||||
@user.role = Role.get :banned
|
||||
flash[:notice] = "'#{@user.name}' has been banned!"
|
||||
else
|
||||
flash[:alert] = "You are not allowed to ban this user!"
|
||||
end
|
||||
@@ -107,8 +151,8 @@ require 'open-uri'
|
||||
|
||||
def unban
|
||||
@user = User.find(params[:id])
|
||||
if mod? && current_user.rank >= @user.rank
|
||||
@user.banned = false
|
||||
if mod? && current_user.role >= @user.role
|
||||
@user.role = Role.get :default
|
||||
flash[:notice] = "\"#{@user.name}\" has been unbanned!"
|
||||
else
|
||||
flash[:alert] = "You are not allowed to unban this user!"
|
||||
@@ -135,7 +179,7 @@ require 'open-uri'
|
||||
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 admin? && current_user.role >= new_user.role
|
||||
if original_user == new_user
|
||||
flash[:alert] = "You are already \"#{new_user.name}\"!"
|
||||
else
|
||||
@@ -154,10 +198,10 @@ require 'open-uri'
|
||||
def unbecome
|
||||
old_user = current_user
|
||||
original_user = User.find(session[:original_user_id])
|
||||
if old_user && original_user
|
||||
if old_user && original_user && original_user.admin?
|
||||
session.delete(:original_user_id)
|
||||
session[:user_id] = original_user.id
|
||||
flash[:notice] = "You are no longer \"#{old_user.name}\"!"
|
||||
flash[:notice] = "You are no longer '#{old_user.name}'!"
|
||||
end
|
||||
redirect_to old_user
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user