summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authornfoy <nfoy@purdue.edu>2014-04-03 16:15:46 -0400
committernfoy <nfoy@purdue.edu>2014-04-03 16:15:46 -0400
commit5169363d6698fb87372efcb7ace552b89953584e (patch)
treeff42d819be510dfe929b4cd9dbc1cd25f51c9785 /app
parent2b79a033262dfe610eb22b7f6b3614db9cb134b1 (diff)
parent9f19d0e16d7920e07255c0fbe596c518d1aa415f (diff)
Merge branch 'master' of https://github.com/LukeShu/leaguer
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/remote_usernames.js.coffee3
-rw-r--r--app/assets/stylesheets/remote_usernames.css.scss3
-rw-r--r--app/assets/stylesheets/tournaments.css.scss7
-rw-r--r--app/controllers/alerts_controller.rb126
-rw-r--r--app/controllers/application_controller.rb8
-rw-r--r--app/controllers/games_controller.rb124
-rw-r--r--app/controllers/matches_controller.rb132
-rw-r--r--app/controllers/pms_controller.rb124
-rw-r--r--app/controllers/remote_usernames_controller.rb74
-rw-r--r--app/controllers/servers_controller.rb126
-rw-r--r--app/controllers/sessions_controller.rb19
-rw-r--r--app/controllers/teams_controller.rb124
-rw-r--r--app/controllers/tournaments_controller.rb260
-rw-r--r--app/controllers/users_controller.rb164
-rw-r--r--app/helpers/remote_usernames_helper.rb2
-rw-r--r--app/helpers/sessions_helper.rb110
-rw-r--r--app/models/alert.rb2
-rw-r--r--app/models/game_setting.rb2
-rw-r--r--app/models/match.rb6
-rw-r--r--app/models/pm.rb4
-rw-r--r--app/models/remote_username.rb4
-rw-r--r--app/models/score.rb4
-rw-r--r--app/models/session.rb41
-rw-r--r--app/models/team.rb6
-rw-r--r--app/models/tournament.rb2
-rw-r--r--app/models/tournament_preference.rb2
-rw-r--r--app/models/user.rb74
-rw-r--r--app/views/matches/index.html.erb4
-rw-r--r--app/views/remote_usernames/_form.html.erb29
-rw-r--r--app/views/remote_usernames/edit.html.erb6
-rw-r--r--app/views/remote_usernames/index.html.erb31
-rw-r--r--app/views/remote_usernames/index.json.jbuilder4
-rw-r--r--app/views/remote_usernames/new.html.erb5
-rw-r--r--app/views/remote_usernames/show.html.erb19
-rw-r--r--app/views/remote_usernames/show.json.jbuilder1
-rw-r--r--app/views/tournaments/_form.html.erb20
-rw-r--r--app/views/tournaments/index.json.jbuilder2
-rw-r--r--app/views/tournaments/show.html.erb127
-rw-r--r--app/views/tournaments/show.json.jbuilder2
39 files changed, 1016 insertions, 787 deletions
diff --git a/app/assets/javascripts/remote_usernames.js.coffee b/app/assets/javascripts/remote_usernames.js.coffee
new file mode 100644
index 0000000..24f83d1
--- /dev/null
+++ b/app/assets/javascripts/remote_usernames.js.coffee
@@ -0,0 +1,3 @@
+# Place all the behaviors and hooks related to the matching controller here.
+# All this logic will automatically be available in application.js.
+# You can use CoffeeScript in this file: http://coffeescript.org/
diff --git a/app/assets/stylesheets/remote_usernames.css.scss b/app/assets/stylesheets/remote_usernames.css.scss
new file mode 100644
index 0000000..b9e841e
--- /dev/null
+++ b/app/assets/stylesheets/remote_usernames.css.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the remote_usernames controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/app/assets/stylesheets/tournaments.css.scss b/app/assets/stylesheets/tournaments.css.scss
index 8857d38..2074783 100644
--- a/app/assets/stylesheets/tournaments.css.scss
+++ b/app/assets/stylesheets/tournaments.css.scss
@@ -73,4 +73,11 @@ div.tournament-listing {
padding: 5px 0 0 0;
}
}
+}
+
+div.leave-buttons {
+ margin-top: 50px;
+ form {
+ display: inline;
+ }
} \ No newline at end of file
diff --git a/app/controllers/alerts_controller.rb b/app/controllers/alerts_controller.rb
index ac11854..d2b1558 100644
--- a/app/controllers/alerts_controller.rb
+++ b/app/controllers/alerts_controller.rb
@@ -1,72 +1,72 @@
class AlertsController < ApplicationController
- before_action :set_alert, only: [:show, :edit, :update, :destroy]
- before_action :check_perms, only: [:new, :create, :edit, :update, :destroy]
+ before_action :set_alert, only: [:show, :edit, :update, :destroy]
+ before_action :check_perms, only: [:new, :create, :edit, :update, :destroy]
- # GET /alerts
- # GET /alerts.json
- def index
- @alerts = Alert.all
- end
+ # GET /alerts
+ # GET /alerts.json
+ def index
+ @alerts = Alert.all
+ end
- # GET /alerts/1
- # GET /alerts/1.json
- def show
- end
+ # GET /alerts/1
+ # GET /alerts/1.json
+ def show
+ end
- # GET /alerts/new
- def new
- @alert = Alert.new
- end
+ # GET /alerts/new
+ def new
+ @alert = Alert.new
+ end
- # GET /alerts/1/edit
- def edit
- end
+ # GET /alerts/1/edit
+ def edit
+ end
- # POST /alerts
- # POST /alerts.json
- def create
- @alert = Alert.new(alert_params)
+ # POST /alerts
+ # POST /alerts.json
+ def create
+ @alert = Alert.new(alert_params)
- respond_to do |format|
- if @alert.save
- format.html { redirect_to @alert, notice: 'Alert was successfully created.' }
- format.json { render action: 'show', status: :created, location: @alert }
- else
- format.html { render action: 'new' }
- format.json { render json: @alert.errors, status: :unprocessable_entity }
- end
- end
- end
+ respond_to do |format|
+ if @alert.save
+ format.html { redirect_to @alert, notice: 'Alert was successfully created.' }
+ format.json { render action: 'show', status: :created, location: @alert }
+ else
+ format.html { render action: 'new' }
+ format.json { render json: @alert.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # PATCH/PUT /alerts/1
- # PATCH/PUT /alerts/1.json
- def update
- respond_to do |format|
- if @alert.update(alert_params)
- format.html { redirect_to @alert, notice: 'Alert was successfully updated.' }
- format.json { head :no_content }
- else
- format.html { render action: 'edit' }
- format.json { render json: @alert.errors, status: :unprocessable_entity }
- end
- end
- end
+ # PATCH/PUT /alerts/1
+ # PATCH/PUT /alerts/1.json
+ def update
+ respond_to do |format|
+ if @alert.update(alert_params)
+ format.html { redirect_to @alert, notice: 'Alert was successfully updated.' }
+ format.json { head :no_content }
+ else
+ format.html { render action: 'edit' }
+ format.json { render json: @alert.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # DELETE /alerts/1
- # DELETE /alerts/1.json
- def destroy
- @alert.destroy
- respond_to do |format|
- format.html { redirect_to alerts_url }
- format.json { head :no_content }
- end
- end
+ # DELETE /alerts/1
+ # DELETE /alerts/1.json
+ def destroy
+ @alert.destroy
+ respond_to do |format|
+ format.html { redirect_to alerts_url }
+ format.json { head :no_content }
+ end
+ end
- private
- # Use callbacks to share common setup or constraints between actions.
- def set_alert
- @alert = Alert.find(params[:id])
- end
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_alert
+ @alert = Alert.find(params[:id])
+ end
def check_perms
unless (signed_in? and (current_user.in_group?(:admin) or current_user.in_group?(:host)))
@@ -77,8 +77,8 @@ class AlertsController < ApplicationController
end
end
- # Never trust parameters from the scary internet, only allow the white list through.
- def alert_params
- params.require(:alert).permit(:author_id, :message)
- end
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def alert_params
+ params.require(:alert).permit(:author_id, :message)
+ end
end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 7487f87..0ac3486 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,8 +1,8 @@
class ApplicationController < ActionController::Base
- # Prevent CSRF attacks by raising an exception.
- # For APIs, you may want to use :null_session instead.
- protect_from_forgery with: :exception
-
+ # Prevent CSRF attacks by raising an exception.
+ # For APIs, you may want to use :null_session instead.
+ protect_from_forgery with: :exception
+
#include sessionhelper for the session controller and view
include SessionsHelper
end
diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb
index 5780152..e9620b4 100644
--- a/app/controllers/games_controller.rb
+++ b/app/controllers/games_controller.rb
@@ -1,74 +1,74 @@
class GamesController < ApplicationController
- before_action :set_game, only: [:show, :edit, :update, :destroy]
+ before_action :set_game, only: [:show, :edit, :update, :destroy]
- # GET /games
- # GET /games.json
- def index
- @games = Game.all
- end
+ # GET /games
+ # GET /games.json
+ def index
+ @games = Game.all
+ end
- # GET /games/1
- # GET /games/1.json
- def show
- end
+ # GET /games/1
+ # GET /games/1.json
+ def show
+ end
- # GET /games/new
- def new
- @game = Game.new
- end
+ # GET /games/new
+ def new
+ @game = Game.new
+ end
- # GET /games/1/edit
- def edit
- end
+ # GET /games/1/edit
+ def edit
+ end
- # POST /games
- # POST /games.json
- def create
- @game = Game.new(game_params)
+ # POST /games
+ # POST /games.json
+ def create
+ @game = Game.new(game_params)
- respond_to do |format|
- if @game.save
- format.html { redirect_to @game, notice: 'Game was successfully created.' }
- format.json { render action: 'show', status: :created, location: @game }
- else
- format.html { render action: 'new' }
- format.json { render json: @game.errors, status: :unprocessable_entity }
- end
- end
- end
+ respond_to do |format|
+ if @game.save
+ format.html { redirect_to @game, notice: 'Game was successfully created.' }
+ format.json { render action: 'show', status: :created, location: @game }
+ else
+ format.html { render action: 'new' }
+ format.json { render json: @game.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # PATCH/PUT /games/1
- # PATCH/PUT /games/1.json
- def update
- respond_to do |format|
- if @game.update(game_params)
- format.html { redirect_to @game, notice: 'Game was successfully updated.' }
- format.json { head :no_content }
- else
- format.html { render action: 'edit' }
- format.json { render json: @game.errors, status: :unprocessable_entity }
- end
- end
- end
+ # PATCH/PUT /games/1
+ # PATCH/PUT /games/1.json
+ def update
+ respond_to do |format|
+ if @game.update(game_params)
+ format.html { redirect_to @game, notice: 'Game was successfully updated.' }
+ format.json { head :no_content }
+ else
+ format.html { render action: 'edit' }
+ format.json { render json: @game.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # DELETE /games/1
- # DELETE /games/1.json
- def destroy
- @game.destroy
- respond_to do |format|
- format.html { redirect_to games_url }
- format.json { head :no_content }
- end
- end
+ # DELETE /games/1
+ # DELETE /games/1.json
+ def destroy
+ @game.destroy
+ respond_to do |format|
+ format.html { redirect_to games_url }
+ format.json { head :no_content }
+ end
+ end
- private
- # Use callbacks to share common setup or constraints between actions.
- def set_game
- @game = Game.find(params[:id])
- end
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_game
+ @game = Game.find(params[:id])
+ end
- # Never trust parameters from the scary internet, only allow the white list through.
- def game_params
- params.require(:game).permit(:name, :min_players_per_team, :max_players_per_team, :min_teams_per_match, :max_teams_per_match, :set_rounds, :randomized_teams)
- end
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def game_params
+ params.require(:game).permit(:name, :min_players_per_team, :max_players_per_team, :min_teams_per_match, :max_teams_per_match, :set_rounds, :randomized_teams)
+ end
end
diff --git a/app/controllers/matches_controller.rb b/app/controllers/matches_controller.rb
index 53028a4..ba6ab16 100644
--- a/app/controllers/matches_controller.rb
+++ b/app/controllers/matches_controller.rb
@@ -1,77 +1,77 @@
class MatchesController < ApplicationController
- before_action :set_tournament, only: [:index, :new, :create]
- before_action :set_match, only: [:show, :edit, :update, :destroy]
- # GET /matches
- # GET /matches.json
- def index
- @matches = @tournament.matches
- end
+ before_action :set_tournament, only: [:index, :new, :create]
+ before_action :set_match, only: [:show, :edit, :update, :destroy]
+ # GET /matches
+ # GET /matches.json
+ def index
+ @matches = @tournament.matches
+ end
- # GET /matches/1
- # GET /matches/1.json
- def show
- end
+ # GET /matches/1
+ # GET /matches/1.json
+ def show
+ end
- # GET /matches/new
- def new
+ # GET /matches/new
+ def new
+ end
- end
+ # GET /matches/1/edit
+ def edit
+ end
- # GET /matches/1/edit
- def edit
- end
+ # POST /matches
+ # POST /matches.json
+ def create
+ @match = @tournament.matches.build(match_params)
- # POST /matches
- # POST /matches.json
- def create
- @match = @tournament.matches.build(match_params)
+ respond_to do |format|
+ if @match.save
+ format.html { redirect_to tournament_matches_path, notice: 'Match was successfully created.' }
+ format.json { render action: 'show', status: :created, location: @match }
+ else
+ format.html { render action: 'new' }
+ format.json { render json: @match.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- respond_to do |format|
- if @match.save
- format.html { redirect_to tournament_matches_path, notice: 'Match was successfully created.' }
- format.json { render action: 'show', status: :created, location: @match }
- else
- format.html { render action: 'new' }
- format.json { render json: @match.errors, status: :unprocessable_entity }
- end
- end
- end
+ # PATCH/PUT /matches/1
+ # PATCH/PUT /matches/1.json
+ def update
+ respond_to do |format|
+ if @match.update(match_params)
+ format.html { redirect_to [@tournament, @match], notice: 'Match was successfully updated.' }
+ format.json { head :no_content }
+ else
+ format.html { render action: 'edit' }
+ format.json { render json: @match.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # PATCH/PUT /matches/1
- # PATCH/PUT /matches/1.json
- def update
- respond_to do |format|
- if @match.update(match_params)
- format.html { redirect_to [@tournament, @match], notice: 'Match was successfully updated.' }
- format.json { head :no_content }
- else
- format.html { render action: 'edit' }
- format.json { render json: @match.errors, status: :unprocessable_entity }
- end
- end
- end
+ # DELETE /matches/1
+ # DELETE /matches/1.json
+ def destroy
+ @match.destroy
+ respond_to do |format|
+ format.html { redirect_to tournament_matches_path }
+ format.json { head :no_content }
+ end
+ end
- # DELETE /matches/1
- # DELETE /matches/1.json
- def destroy
-
- @match.destroy
- respond_to do |format|
- format.html { redirect_to tournament_matches_path }
- end
- end
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_match
+ @tournament = Tournament.find(params[:tournament_id])
+ @match = @tournament.matches.find(params[:id]);
+ end
+ def set_tournament
+ @tournament = Tournament.find(params[:tournament_id])
+ end
- private
- # Use callbacks to share common setup or constraints between actions.
- def set_match
- @tournament = Tournament.find(params[:tournament_id])
- @match = @tournament.matches.find(params[:id]);
- end
- def set_tournament
- @tournament = Tournament.find(params[:tournament_id])
- end
- # Never trust parameters from the scary internet, only allow the white list through.
- def match_params
- params.require(:match).permit(:status, :tournament_id, :name, :winner_id, :remote_id)
- end
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def match_params
+ params.require(:match).permit(:status, :tournament_id, :name, :winner_id, :remote_id)
+ end
end
diff --git a/app/controllers/pms_controller.rb b/app/controllers/pms_controller.rb
index 5dd0d69..b62a6ef 100644
--- a/app/controllers/pms_controller.rb
+++ b/app/controllers/pms_controller.rb
@@ -1,74 +1,74 @@
class PmsController < ApplicationController
- before_action :set_pm, only: [:show, :edit, :update, :destroy]
+ before_action :set_pm, only: [:show, :edit, :update, :destroy]
- # GET /pms
- # GET /pms.json
- def index
- @pms = Pm.all
- end
+ # GET /pms
+ # GET /pms.json
+ def index
+ @pms = Pm.all
+ end
- # GET /pms/1
- # GET /pms/1.json
- def show
- end
+ # GET /pms/1
+ # GET /pms/1.json
+ def show
+ end
- # GET /pms/new
- def new
- @pm = Pm.new
- end
+ # GET /pms/new
+ def new
+ @pm = Pm.new
+ end
- # GET /pms/1/edit
- def edit
- end
+ # GET /pms/1/edit
+ def edit
+ end
- # POST /pms
- # POST /pms.json
- def create
- @pm = Pm.new(pm_params)
+ # POST /pms
+ # POST /pms.json
+ def create
+ @pm = Pm.new(pm_params)
- respond_to do |format|
- if @pm.save
- format.html { redirect_to @pm, notice: 'Pm was successfully created.' }
- format.json { render action: 'show', status: :created, location: @pm }
- else
- format.html { render action: 'new' }
- format.json { render json: @pm.errors, status: :unprocessable_entity }
- end
- end
- end
+ respond_to do |format|
+ if @pm.save
+ format.html { redirect_to @pm, notice: 'Pm was successfully created.' }
+ format.json { render action: 'show', status: :created, location: @pm }
+ else
+ format.html { render action: 'new' }
+ format.json { render json: @pm.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # PATCH/PUT /pms/1
- # PATCH/PUT /pms/1.json
- def update
- respond_to do |format|
- if @pm.update(pm_params)
- format.html { redirect_to @pm, notice: 'Pm was successfully updated.' }
- format.json { head :no_content }
- else
- format.html { render action: 'edit' }
- format.json { render json: @pm.errors, status: :unprocessable_entity }
- end
- end
- end
+ # PATCH/PUT /pms/1
+ # PATCH/PUT /pms/1.json
+ def update
+ respond_to do |format|
+ if @pm.update(pm_params)
+ format.html { redirect_to @pm, notice: 'Pm was successfully updated.' }
+ format.json { head :no_content }
+ else
+ format.html { render action: 'edit' }
+ format.json { render json: @pm.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # DELETE /pms/1
- # DELETE /pms/1.json
- def destroy
- @pm.destroy
- respond_to do |format|
- format.html { redirect_to pms_url }
- format.json { head :no_content }
- end
- end
+ # DELETE /pms/1
+ # DELETE /pms/1.json
+ def destroy
+ @pm.destroy
+ respond_to do |format|
+ format.html { redirect_to pms_url }
+ format.json { head :no_content }
+ end
+ end
- private
- # Use callbacks to share common setup or constraints between actions.
- def set_pm
- @pm = Pm.find(params[:id])
- end
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_pm
+ @pm = Pm.find(params[:id])
+ end
- # Never trust parameters from the scary internet, only allow the white list through.
- def pm_params
- params.require(:pm).permit(:author_id, :recipient_id, :message)
- end
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def pm_params
+ params.require(:pm).permit(:author_id, :recipient_id, :message)
+ end
end
diff --git a/app/controllers/remote_usernames_controller.rb b/app/controllers/remote_usernames_controller.rb
new file mode 100644
index 0000000..8676c00
--- /dev/null
+++ b/app/controllers/remote_usernames_controller.rb
@@ -0,0 +1,74 @@
+class RemoteUsernamesController < ApplicationController
+ before_action :set_remote_username, only: [:show, :edit, :update, :destroy]
+
+ # GET /remote_usernames
+ # GET /remote_usernames.json
+ def index
+ @remote_usernames = RemoteUsername.all
+ end
+
+ # GET /remote_usernames/1
+ # GET /remote_usernames/1.json
+ def show
+ end
+
+ # GET /remote_usernames/new
+ def new
+ @remote_username = RemoteUsername.new
+ end
+
+ # GET /remote_usernames/1/edit
+ def edit
+ end
+
+ # POST /remote_usernames
+ # POST /remote_usernames.json
+ def create
+ @remote_username = RemoteUsername.new(remote_username_params)
+
+ respond_to do |format|
+ if @remote_username.save
+ format.html { redirect_to @remote_username, notice: 'Remote username was successfully created.' }
+ format.json { render action: 'show', status: :created, location: @remote_username }
+ else
+ format.html { render action: 'new' }
+ format.json { render json: @remote_username.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+
+ # PATCH/PUT /remote_usernames/1
+ # PATCH/PUT /remote_usernames/1.json
+ def update
+ respond_to do |format|
+ if @remote_username.update(remote_username_params)
+ format.html { redirect_to @remote_username, notice: 'Remote username was successfully updated.' }
+ format.json { head :no_content }
+ else
+ format.html { render action: 'edit' }
+ format.json { render json: @remote_username.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+
+ # DELETE /remote_usernames/1
+ # DELETE /remote_usernames/1.json
+ def destroy
+ @remote_username.destroy
+ respond_to do |format|
+ format.html { redirect_to remote_usernames_url }
+ format.json { head :no_content }
+ end
+ end
+
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_remote_username
+ @remote_username = RemoteUsername.find(params[:id])
+ end
+
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def remote_username_params
+ params.require(:remote_username).permit(:game_id, :user_id, :user_name)
+ end
+end
diff --git a/app/controllers/servers_controller.rb b/app/controllers/servers_controller.rb
index bb5d5f7..f23f2bf 100644
--- a/app/controllers/servers_controller.rb
+++ b/app/controllers/servers_controller.rb
@@ -1,72 +1,72 @@
class ServersController < ApplicationController
- before_action :set_server, only: [:show, :edit, :update, :destroy]
- before_action :check_perms
+ before_action :set_server, only: [:show, :edit, :update, :destroy]
+ before_action :check_perms
- # GET /servers
- # GET /servers.json
- def index
- @servers = Server.all
- end
+ # GET /servers
+ # GET /servers.json
+ def index
+ @servers = Server.all
+ end
- # GET /servers/1
- # GET /servers/1.json
- def show
- end
+ # GET /servers/1
+ # GET /servers/1.json
+ def show
+ end
- # GET /servers/new
- def new
- @server = Server.new
- end
+ # GET /servers/new
+ def new
+ @server = Server.new
+ end
- # GET /servers/1/edit
- def edit
- end
+ # GET /servers/1/edit
+ def edit
+ end
- # POST /servers
- # POST /servers.json
- def create
- @server = Server.new(server_params)
+ # POST /servers
+ # POST /servers.json
+ def create
+ @server = Server.new(server_params)
- respond_to do |format|
- if @server.save
- format.html { redirect_to @server, notice: 'Server was successfully created.' }
- format.json { render action: 'show', status: :created, location: @server }
- else
- format.html { render action: 'new' }
- format.json { render json: @server.errors, status: :unprocessable_entity }
- end
- end
- end
+ respond_to do |format|
+ if @server.save
+ format.html { redirect_to @server, notice: 'Server was successfully created.' }
+ format.json { render action: 'show', status: :created, location: @server }
+ else
+ format.html { render action: 'new' }
+ format.json { render json: @server.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # PATCH/PUT /servers/1
- # PATCH/PUT /servers/1.json
- def update
- respond_to do |format|
- if @server.update(server_params)
- format.html { redirect_to @server, notice: 'Server was successfully updated.' }
- format.json { head :no_content }
- else
- format.html { render action: 'edit' }
- format.json { render json: @server.errors, status: :unprocessable_entity }
- end
- end
- end
+ # PATCH/PUT /servers/1
+ # PATCH/PUT /servers/1.json
+ def update
+ respond_to do |format|
+ if @server.update(server_params)
+ format.html { redirect_to @server, notice: 'Server was successfully updated.' }
+ format.json { head :no_content }
+ else
+ format.html { render action: 'edit' }
+ format.json { render json: @server.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # DELETE /servers/1
- # DELETE /servers/1.json
- def destroy
- @server.destroy
- respond_to do |format|
- format.html { redirect_to servers_url }
- format.json { head :no_content }
- end
- end
+ # DELETE /servers/1
+ # DELETE /servers/1.json
+ def destroy
+ @server.destroy
+ respond_to do |format|
+ format.html { redirect_to servers_url }
+ format.json { head :no_content }
+ end
+ end
- private
- # Use callbacks to share common setup or constraints between actions.
- def set_server
- @server = Server.find(params[:id])
- end
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_server
+ @server = Server.find(params[:id])
+ end
def check_perms
unless (signed_in? and current_user.in_group?(:admin))
@@ -77,8 +77,8 @@ class ServersController < ApplicationController
end
end
- # Never trust parameters from the scary internet, only allow the white list through.
- def server_params
- params[:server]
- end
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def server_params
+ params[:server]
+ end
end
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb
index 7cb16e8..1bae258 100644
--- a/app/controllers/sessions_controller.rb
+++ b/app/controllers/sessions_controller.rb
@@ -6,7 +6,7 @@ class SessionsController < ApplicationController
@user = User.new
#@session = Session.new
end
-
+
# POST /sessions
# POST /sessions.json
def create
@@ -39,14 +39,13 @@ class SessionsController < ApplicationController
end
private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_session
+ #@session = Session.find(cookies[:remember_token])
+ end
- # Use callbacks to share common setup or constraints between actions.
- def set_session
- #@session = Session.find(cookies[:remember_token])
- end
-
- # Never trust parameters from the scary internet, only allow the white list through.
- def session_params
- params.require(:session).permit(:session_email, :session_user_name, :session_password)
- end
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def session_params
+ params.require(:session).permit(:session_email, :session_user_name, :session_password)
+ end
end
diff --git a/app/controllers/teams_controller.rb b/app/controllers/teams_controller.rb
index ccd6781..05e7a12 100644
--- a/app/controllers/teams_controller.rb
+++ b/app/controllers/teams_controller.rb
@@ -1,74 +1,74 @@
class TeamsController < ApplicationController
- before_action :set_team, only: [:show, :edit, :update, :destroy]
+ before_action :set_team, only: [:show, :edit, :update, :destroy]
- # GET /teams
- # GET /teams.json
- def index
- @teams = Team.all
- end
+ # GET /teams
+ # GET /teams.json
+ def index
+ @teams = Team.all
+ end
- # GET /teams/1
- # GET /teams/1.json
- def show
- end
+ # GET /teams/1
+ # GET /teams/1.json
+ def show
+ end
- # GET /teams/new
- def new
- @team = Team.new
- end
+ # GET /teams/new
+ def new
+ @team = Team.new
+ end
- # GET /teams/1/edit
- def edit
- end
+ # GET /teams/1/edit
+ def edit
+ end
- # POST /teams
- # POST /teams.json
- def create
- @team = Team.new(team_params)
+ # POST /teams
+ # POST /teams.json
+ def create
+ @team = Team.new(team_params)
- respond_to do |format|
- if @team.save
- format.html { redirect_to @team, notice: 'Team was successfully created.' }
- format.json { render action: 'show', status: :created, location: @team }
- else
- format.html { render action: 'new' }
- format.json { render json: @team.errors, status: :unprocessable_entity }
- end
- end
- end
+ respond_to do |format|
+ if @team.save
+ format.html { redirect_to @team, notice: 'Team was successfully created.' }
+ format.json { render action: 'show', status: :created, location: @team }
+ else
+ format.html { render action: 'new' }
+ format.json { render json: @team.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # PATCH/PUT /teams/1
- # PATCH/PUT /teams/1.json
- def update
- respond_to do |format|
- if @team.update(team_params)
- format.html { redirect_to @team, notice: 'Team was successfully updated.' }
- format.json { head :no_content }
- else
- format.html { render action: 'edit' }
- format.json { render json: @team.errors, status: :unprocessable_entity }
- end
- end
- end
+ # PATCH/PUT /teams/1
+ # PATCH/PUT /teams/1.json
+ def update
+ respond_to do |format|
+ if @team.update(team_params)
+ format.html { redirect_to @team, notice: 'Team was successfully updated.' }
+ format.json { head :no_content }
+ else
+ format.html { render action: 'edit' }
+ format.json { render json: @team.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # DELETE /teams/1
- # DELETE /teams/1.json
- def destroy
- @team.destroy
- respond_to do |format|
- format.html { redirect_to teams_url }
- format.json { head :no_content }
- end
- end
+ # DELETE /teams/1
+ # DELETE /teams/1.json
+ def destroy
+ @team.destroy
+ respond_to do |format|
+ format.html { redirect_to teams_url }
+ format.json { head :no_content }
+ end
+ end
- private
- # Use callbacks to share common setup or constraints between actions.
- def set_team
- @team = Team.find(params[:id])
- end
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_team
+ @team = Team.find(params[:id])
+ end
- # Never trust parameters from the scary internet, only allow the white list through.
- def team_params
- params.require(:team).permit(:match_id)
- end
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def team_params
+ params.require(:team).permit(:match_id)
+ end
end
diff --git a/app/controllers/tournaments_controller.rb b/app/controllers/tournaments_controller.rb
index 165ad87..9cf3404 100644
--- a/app/controllers/tournaments_controller.rb
+++ b/app/controllers/tournaments_controller.rb
@@ -1,138 +1,148 @@
class TournamentsController < ApplicationController
- before_action :set_tournament, only: [:show, :edit, :update, :destroy, :join]
- before_action :check_perms, only: [:new, :create, :edit, :destroy]
+ before_action :set_tournament, only: [:show, :edit, :update, :destroy, :join]
+ before_action :check_perms, only: [:new, :create, :edit, :destroy]
- # GET /tournaments
- # GET /tournaments.json
- def index
- @tournaments = Tournament.all
- end
+ # GET /tournaments
+ # GET /tournaments.json
+ def index
+ @tournaments = Tournament.all
+ end
- # GET /tournaments/1
- # GET /tournaments/1.json
- def show
- case @tournament.status
- when 0
- when 1..2
- redirect_to "/tournaments/" + @tournament.id.to_s + "/matches" #tournament_matches_page(@tournament)
- end
- end
+ # GET /tournaments/1
+ # GET /tournaments/1.json
+ def show
+ respond_to do |format|
+ format.html {
+ case @tournament.status
+ when 0
+ render action: 'show'
+ when 1..2
+ redirect_to "/tournaments/" + @tournament.id.to_s + "/matches" #tournament_matches_page(@tournament)
+ end
+ }
+ format.json {
+ data = JSON.parse(@tournament.to_json)
+ data["players"] = @tournament.players;
+ render :json => data.to_json
+ }
+ end
+ end
- # GET /tournaments/new
- def new
- @games = Game.all
- @tournament = Tournament.new(game: Game.find_by_id(params[:game]))
- end
+ # GET /tournaments/new
+ def new
+ @games = Game.all
+ @tournament = Tournament.new(game: Game.find_by_id(params[:game]))
+ end
- # GET /tournaments/1/edit
- def edit
- if params['close_action'] == 'close'
- @tournament.status = 1
- @tournament.save
- @tournament.setup(@tournament)
- redirect_to "/tournaments"
- end
- end
+ # GET /tournaments/1/edit
+ def edit
+ if params['close_action'] == 'close'
+ @tournament.status = 1
+ @tournament.save
+ @tournament.setup(@tournament)
+ redirect_to "/tournaments"
+ end
+ end
- # POST /tournaments
- # POST /tournaments.json
- def create
- @tournament = Tournament.new(tournament_params)
- @tournament.status = 0
- respond_to do |format|
- if @tournament.save
- @tournament.hosts.push(current_user)
- format.html { redirect_to @tournament, notice: 'Tournament was successfully created.' }
- format.json { render action: 'show', status: :created, location: @tournament }
- else
- format.html { render action: 'new' }
- format.json { render json: @tournament.errors, status: :unprocessable_entity }
- end
- end
- end
+ # POST /tournaments
+ # POST /tournaments.json
+ def create
+ @tournament = Tournament.new(tournament_params)
+ @tournament.status = 0
+ respond_to do |format|
+ if @tournament.save
+ @tournament.hosts.push(current_user)
+ format.html { redirect_to @tournament, notice: 'Tournament was successfully created.' }
+ format.json { render action: 'show', status: :created, location: @tournament }
+ else
+ format.html { render action: 'new' }
+ format.json { render json: @tournament.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # PATCH/PUT /tournaments/1
- # PATCH/PUT /tournaments/1.json
- def update
-
- if params[:update_action].nil?
- check_perms
- respond_to do |format|
- if @tournament.update(tournament_params)
- format.html { redirect_to @tournament, notice: 'Tournament was successfully updated.' }
- format.json { head :no_content }
- else
- format.html { render action: 'edit' }
- format.json { render json: @tournament.errors, status: :unprocessable_entity }
- end
- end
- else
- case params[:update_action]
- when "join"
- respond_to do |format|
- if @tournament.join(current_user)
- format.html { render action: 'show', notice: 'You have joined this tournament.' }
- format.json { head :no_content }
- end
- format.html { render action: 'permission_denied', status: :forbidden }
- format.json { render json: "Permission denied", status: :forbidden }
- end
- when "leave"
- respond_to do |format|
- if @tournament.leave(current_user)
- format.html {redirect_to tournaments_url, notice: 'You have left the tournament.' }
- format.json { head :no_content }
- end
- format.html {redirect_to @tournament, notice: 'You were\'t a part of this tournament.' }
- format.json { render json: "Permission denied", status: :forbidden }
- end
- when "open"
- respond_to do |format|
- if @tournament.setup
- format.html { render action: 'show', notice: 'You have joined this tournament.' }
- format.json { head :no_content }
- end
- format.html { render action: 'permission_denied', status: :forbidden }
- format.json { render json: "Permission denied", status: :forbidden }
- end
- #when "close"
- # TODO
- else
- respond_to do |format|
- format.html { render action: 'show', notice: "Invalid action", status: :unprocessable_entity }
- format.json { render json: @tournament.errors, status: :unprocessable_entity }
- end
- end
- end
- end
+ # PATCH/PUT /tournaments/1
+ # PATCH/PUT /tournaments/1.json
+ def update
- # DELETE /tournaments/1
- # DELETE /tournaments/1.json
- def destroy
- @tournament.destroy
- respond_to do |format|
- format.html { redirect_to tournaments_url }
- format.json { head :no_content }
- end
- end
+ if params[:update_action].nil?
+ check_perms
+ respond_to do |format|
+ if @tournament.update(tournament_params)
+ format.html { redirect_to @tournament, notice: 'Tournament was successfully updated.' }
+ format.json { head :no_content }
+ else
+ format.html { render action: 'edit' }
+ format.json { render json: @tournament.errors, status: :unprocessable_entity }
+ end
+ end
+ else
+ case params[:update_action]
+ when "join"
+ respond_to do |format|
+ if @tournament.join(current_user)
+ format.html { render action: 'show', notice: 'You have joined this tournament.' }
+ format.json { head :no_content }
+ end
+ format.html { render action: 'permission_denied', status: :forbidden }
+ format.json { render json: "Permission denied", status: :forbidden }
+ end
+ when "leave"
+ respond_to do |format|
+ if @tournament.leave(current_user)
+ format.html {redirect_to tournaments_url, notice: 'You have left the tournament.' }
+ format.json { head :no_content }
+ end
+ format.html {redirect_to @tournament, notice: 'You were\'t a part of this tournament.' }
+ format.json { render json: "Permission denied", status: :forbidden }
+ end
+ when "open"
+ respond_to do |format|
+ if @tournament.setup
+ format.html { render action: 'show', notice: 'You have joined this tournament.' }
+ format.json { head :no_content }
+ end
+ format.html { render action: 'permission_denied', status: :forbidden }
+ format.json { render json: "Permission denied", status: :forbidden }
+ end
+ #when "close"
+ # TODO
+ else
+ respond_to do |format|
+ format.html { render action: 'show', notice: "Invalid action", status: :unprocessable_entity }
+ format.json { render json: @tournament.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+ end
- private
- # Use callbacks to share common setup or constraints between actions.
- def set_tournament
- @tournament = Tournament.find(params[:id])
- end
+ # DELETE /tournaments/1
+ # DELETE /tournaments/1.json
+ def destroy
+ @tournament.destroy
+ respond_to do |format|
+ format.html { redirect_to tournaments_url }
+ format.json { head :no_content }
+ end
+ end
+
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_tournament
+ @tournament = Tournament.find(params[:id])
+ end
def check_perms
- unless (signed_in? and current_user.in_group?(:host))
- respond_to do |format|
- format.html { render action: 'permission_denied', status: :forbidden }
- format.json { render json: "Permission denied", status: :forbidden }
- end
- end
- end
+ unless (signed_in? and current_user.in_group?(:host))
+ respond_to do |format|
+ format.html { render action: 'permission_denied', status: :forbidden }
+ format.json { render json: "Permission denied", status: :forbidden }
+ end
+ end
+ end
- # Never trust parameters from the scary internet, only allow the white list through.
- def tournament_params
- params.require(:tournament).permit(:game, :name, :game_id, :status, :min_players_per_team, :max_players_per_team, :min_teams_per_match, :max_teams_per_match, :set_rounds, :randomized_teams)
- end
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def tournament_params
+ params.require(:tournament).permit(:game, :name, :game_id, :status, :min_players_per_team, :max_players_per_team, :min_teams_per_match, :max_teams_per_match, :set_rounds, :randomized_teams)
+ end
end
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 70facca..60857f1 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -1,96 +1,94 @@
class UsersController < ApplicationController
- before_action :set_user, only: [:show, :edit, :update, :destroy]
- before_action :perms_edit, only: [:edit, :update, :destroy]
- before_action :perms_create, only: [:new, :create]
+ before_action :set_user, only: [:show, :edit, :update, :destroy]
+ before_action :perms_edit, only: [:edit, :update, :destroy]
+ before_action :perms_create, only: [:new, :create]
- # GET /users
- # GET /users.json
- def index
- @users = User.all
- end
+ # GET /users
+ # GET /users.json
+ def index
+ @users = User.all
+ end
- # GET /users/1
- # GET /users/1.json
- def show
- @user = User.find(params[:id])
- end
+ # GET /users/1
+ # GET /users/1.json
+ def show
+ end
- # GET /users/new
- def new
- @user = User.new
- end
+ # GET /users/new
+ def new
+ @user = User.new
+ end
- # GET /users/1/edit
- def edit
- end
+ # GET /users/1/edit
+ def edit
+ end
- # POST /users
- # POST /users.json
- def create
- @user = User.new(user_params)
- @user.groups = 0
- respond_to do |format|
- if @user.save
- sign_in @user
- format.html { redirect_to root_path, notice: 'User was successfully created.' }
- format.json { render action: 'show', status: :created, location: @user }
- else
- format.html { render action: 'new', status: :unprocessable_entity }
- format.json { render json: @user.errors, status: :unprocessable_entity }
- end
- end
- end
+ # POST /users
+ # POST /users.json
+ def create
+ @user = User.new(user_params)
+ respond_to do |format|
+ if @user.save
+ sign_in @user
+ format.html { redirect_to root_path, notice: 'User was successfully created.' }
+ format.json { render action: 'show', status: :created, location: @user }
+ else
+ format.html { render action: 'new', status: :unprocessable_entity }
+ format.json { render json: @user.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # PATCH/PUT /users/1
- # PATCH/PUT /users/1.json
- def update
- respond_to do |format|
- if @user.update(user_params)
- format.html { redirect_to @user, notice: 'User was successfully updated.' }
- format.json { head :no_content }
- else
- format.html { render action: 'edit' }
- format.json { render json: @user.errors, status: :unprocessable_entity }
- end
- end
- end
+ # PATCH/PUT /users/1
+ # PATCH/PUT /users/1.json
+ def update
+ respond_to do |format|
+ if @user.update(user_params)
+ format.html { redirect_to @user, notice: 'User was successfully updated.' }
+ format.json { head :no_content }
+ else
+ format.html { render action: 'edit' }
+ format.json { render json: @user.errors, status: :unprocessable_entity }
+ end
+ end
+ end
- # DELETE /users/1
- # DELETE /users/1.json
- def destroy
- @user.destroy
- respond_to do |format|
- format.html { redirect_to users_url }
- format.json { head :no_content }
- end
- end
+ # DELETE /users/1
+ # DELETE /users/1.json
+ def destroy
+ @user.destroy
+ respond_to do |format|
+ format.html { redirect_to users_url }
+ format.json { head :no_content }
+ end
+ end
- private
- # Use callbacks to share common setup or constraints between actions.
- def set_user
- @user = User.find(params[:id])
- end
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_user
+ @user = User.find(params[:id])
+ end
- def perms_edit
- unless (current_user == @user) or (signed_in? and current_user.in_group? :admin)
- respond_to do |format|
- format.html { render action: 'permission_denied', status: :forbidden }
- format.json { render json: "Permission denied", status: :forbidden }
- end
- end
- end
+ def perms_edit
+ unless (current_user == @user) or (signed_in? and current_user.in_group? :admin)
+ respond_to do |format|
+ format.html { render action: 'permission_denied', status: :forbidden }
+ format.json { render json: "Permission denied", status: :forbidden }
+ end
+ end
+ end
- def perms_create
- if signed_in?
- respond_to do |format|
- format.html { render action: 'already_signed_in', status: :unprocessable_entity }
- format.json { render json: "Already signed in", status: :unprocessable_entity }
- end
- end
- end
+ def perms_create
+ if signed_in?
+ respond_to do |format|
+ format.html { render action: 'already_signed_in', status: :unprocessable_entity }
+ format.json { render json: "Already signed in", status: :unprocessable_entity }
+ end
+ end
+ end
- # Never trust parameters from the scary internet, only allow the white list through.
- def user_params
- params.require(:user).permit(:name, :email, :user_name, :password, :password_confirmation)
- end
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def user_params
+ params.require(:user).permit(:name, :email, :user_name, :password, :password_confirmation)
+ end
end
diff --git a/app/helpers/remote_usernames_helper.rb b/app/helpers/remote_usernames_helper.rb
new file mode 100644
index 0000000..3240c4f
--- /dev/null
+++ b/app/helpers/remote_usernames_helper.rb
@@ -0,0 +1,2 @@
+module RemoteUsernamesHelper
+end
diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb
index 046ca6f..54e4b0d 100644
--- a/app/helpers/sessions_helper.rb
+++ b/app/helpers/sessions_helper.rb
@@ -1,73 +1,65 @@
module SessionsHelper
-
def sign_in(user)
- #create a new remember token
- remember_token = User.new_remember_token
- #place token inside of the browser
- cookies.permanent[:remember_token] = remember_token
- #save the hashed token to the database
- user.update_attribute(:remember_token,
- User.hash(remember_token))
- #set the current user to be the given user
- self.current_user = user
- end
+ @session = Session.new(user: user)
+ raw_token = @session.create_token
+ @session.save # FIXME: error handling
-# The curret_user=(user) is the conversion of self.current_user = user
- def current_user=(user)
+ @token = Session.hash_token(raw_token)
+ cookies.permanent[:remember_token] = raw_token
+
+ #set the current user to be the given user
@current_user = user
end
-# sets the @current_user instance virable to the user corresponding
-# to the remember token, but only if @current_user is undefined
-# since the remember token is hashed, we need to hash the cookie
-# to find match the remember token
- def current_user
- remember_token = User.hash(cookies[:remember_token])
- @current_user ||= User.find_by(remember_token: remember_token)
- end
+ # sets the @current_user instance virable to the user corresponding
+ # to the remember token, but only if @current_user is undefined
+ # since the remember token is hashed, we need to hash the cookie
+ # to find match the remember token
+ def current_user
+ @token ||= Session.hash_token(cookies[:remember_token])
+ @session ||= Session.find_by(token: @token)
+ @current_user ||= (@session.nil? ? nil : @session.user)
+ end
# checks if someone is currently signed in
def signed_in?
!current_user.nil?
end
- def sign_out
- current_user.update_attribute(:remember_token, User.hash(User.new_remember_token))
- cookies.delete(:remember_token)
- self.current_user = nil
- end
-
-=begin
-
-This is for anyone that cares about how long a user is signed
-in:
-
-Currently I have a user to be signed in forever unless they
-log out (cookies.permanent....).
-
-If you want to change that, change line 7 to this:
-
-cookies[:remember_token] = { value: remember_token,
- expires: 20.years.from_now.utc }
-
-which will expire the cookie in 20 years from its date of
-creation.
-
-Oddly enough, this line above is equivalent to the:
-
-cookies.permanent
-
-This is just a short cut for this line since most people
-create permanent cookies these days.
-
-Other times are:
-
-10.weeks.from_now
-
-5.days.ago
-
-etc...
-
-=end
+ def sign_out
+ if signed_in?
+ @session.destroy
+ end
+ @current_user = nil
+ cookies.delete(:remember_token)
+ end
+ # This is for anyone that cares about how long a user is signed
+ # in:
+ #
+ # Currently I have a user to be signed in forever unless they
+ # log out (cookies.permanent....).
+ #
+ # If you want to change that, change line 7 to this:
+ #
+ # cookies[:remember_token] = { value: remember_token,
+ # expires: 20.years.from_now.utc }
+ #
+ # which will expire the cookie in 20 years from its date of
+ # creation.
+ #
+ # Oddly enough, this line above is equivalent to the:
+ #
+ # cookies.permanent
+ #
+ # This is just a short cut for this line since most people
+ # create permanent cookies these days.
+ #
+ # Other times are:
+ #
+ # 10.weeks.from_now
+ #
+ # 5.days.ago
+ #
+ # etc...
end
diff --git a/app/models/alert.rb b/app/models/alert.rb
index 343c269..0516355 100644
--- a/app/models/alert.rb
+++ b/app/models/alert.rb
@@ -1,3 +1,3 @@
class Alert < ActiveRecord::Base
- belongs_to :author
+ belongs_to :author
end
diff --git a/app/models/game_setting.rb b/app/models/game_setting.rb
index e147b15..bff8d97 100644
--- a/app/models/game_setting.rb
+++ b/app/models/game_setting.rb
@@ -1,3 +1,3 @@
class GameSetting < ActiveRecord::Base
- belongs_to :game
+ belongs_to :game
end
diff --git a/app/models/match.rb b/app/models/match.rb
index 782dce8..35deb20 100644
--- a/app/models/match.rb
+++ b/app/models/match.rb
@@ -1,8 +1,8 @@
class Match < ActiveRecord::Base
- belongs_to :tournament
+ belongs_to :tournament
- has_and_belongs_to_many :teams
+ has_and_belongs_to_many :teams
- belongs_to :winner, class_name: "Team"
+ belongs_to :winner, class_name: "Team"
end
diff --git a/app/models/pm.rb b/app/models/pm.rb
index ab5af3b..9fce2b3 100644
--- a/app/models/pm.rb
+++ b/app/models/pm.rb
@@ -1,4 +1,4 @@
class Pm < ActiveRecord::Base
- belongs_to :author
- belongs_to :recipient
+ belongs_to :author
+ belongs_to :recipient
end
diff --git a/app/models/remote_username.rb b/app/models/remote_username.rb
index 94e5063..c477f8a 100644
--- a/app/models/remote_username.rb
+++ b/app/models/remote_username.rb
@@ -1,4 +1,4 @@
class RemoteUsername < ActiveRecord::Base
- belongs_to :game
- belongs_to :user
+ belongs_to :game
+ belongs_to :user
end
diff --git a/app/models/score.rb b/app/models/score.rb
index a9b9c71..11ee9a6 100644
--- a/app/models/score.rb
+++ b/app/models/score.rb
@@ -1,4 +1,4 @@
class Score < ActiveRecord::Base
- belongs_to :user
- belongs_to :match
+ belongs_to :user
+ belongs_to :match
end
diff --git a/app/models/session.rb b/app/models/session.rb
index c66afec..f5e642b 100644
--- a/app/models/session.rb
+++ b/app/models/session.rb
@@ -1,3 +1,42 @@
class Session < ActiveRecord::Base
- belongs_to :user
+ belongs_to :user
+
+ ##
+ # Create a random remember token for the user. This will be
+ # changed every time the user creates a new session.
+ #
+ # If you want this value, hang on to it; the raw value is
+ # discarded afterward.
+ #
+ # By changing the cookie every new session, any hijacked sessions
+ # (where the attacker steals a cookie to sign in as a certain
+ # user) will expire the next time the user signs back in.
+ #
+ # The random string is of length 16 composed of A-Z, a-z, 0-9
+ # This is the browser's cookie value.
+ def create_token()
+ t = SecureRandom.urlsafe_base64
+ self.token = Session.hash_token(t)
+ t
+ end
+
+ ##
+ # Encrypt the remember token.
+ # This is the encrypted version of the cookie stored on
+ # the database.
+ #
+ # The reasoning for storing a hashed token is so that even if
+ # the database is compromised, the attacker won't be able to use
+ # the remember tokens to sign in.
+ def Session.hash_token(token)
+ # SHA-1 (Secure Hash Algorithm) is a US engineered hash
+ # function that produces a 20 byte hash value which typically
+ # forms a hexadecimal number 40 digits long.
+ # The reason I am not using the Bcrypt algorithm is because
+ # SHA-1 is much faster and I will be calling this on
+ # every page a user accesses.
+ #
+ # https://en.wikipedia.org/wiki/SHA-1
+ Digest::SHA1.hexdigest(token.to_s)
+ end
end
diff --git a/app/models/team.rb b/app/models/team.rb
index 2348de5..7aae7c2 100644
--- a/app/models/team.rb
+++ b/app/models/team.rb
@@ -1,5 +1,5 @@
class Team < ActiveRecord::Base
- belongs_to :match
- has_and_belongs_to_many :matches
- has_and_belongs_to_many :users
+ belongs_to :match
+ has_and_belongs_to_many :matches
+ has_and_belongs_to_many :users
end
diff --git a/app/models/tournament.rb b/app/models/tournament.rb
index 21dc9bb..87b516e 100644
--- a/app/models/tournament.rb
+++ b/app/models/tournament.rb
@@ -43,6 +43,4 @@ class Tournament < ActiveRecord::Base
end
end
end
-
-
end
diff --git a/app/models/tournament_preference.rb b/app/models/tournament_preference.rb
index 1f335e3..3d15061 100644
--- a/app/models/tournament_preference.rb
+++ b/app/models/tournament_preference.rb
@@ -1,3 +1,3 @@
class TournamentPreference < ActiveRecord::Base
- belongs_to :tournament
+ belongs_to :tournament
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 6e439fb..277d885 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -2,17 +2,14 @@ class User < ActiveRecord::Base
has_and_belongs_to_many :tournaments_played, class_name: "Tournament", foreign_key: "player_id", join_table: "players_tournaments"
has_and_belongs_to_many :tournaments_hosted, class_name: "Tournament", foreign_key: "host_id", join_table: "hosts_tournaments"
has_and_belongs_to_many :teams
+ has_many :sessions
before_save { self.email = email.downcase }
before_save { self.user_name = user_name }
- ##
- # Rails looks for the create_remember_token and runs the method
- # before anything else.
- #
- # This method cannot be called by a user since it is denoted
- # as private.
- before_create :create_remember_token
+ def after_initialize
+ self.permissions = 0
+ end
def in_group?(group)
case group
@@ -77,11 +74,11 @@ class User < ActiveRecord::Base
# validity
validates(:name, presence: true, length: { maximum: 50 })
validates(:email, presence: true, format: {with:
- VALID_EMAIL_REG},
- uniqueness: { case_sensitive: false })
+ VALID_EMAIL_REG},
+ uniqueness: { case_sensitive: false })
validates(:user_name, presence: true, length:{maximum: 50},
- format: {with: VALID_USER_NAME_REG },
- uniqueness: {case_sensitive: false })
+ format: {with: VALID_USER_NAME_REG },
+ uniqueness: {case_sensitive: false })
##
# Instead of adding password and password_confirmation
@@ -93,59 +90,4 @@ class User < ActiveRecord::Base
has_secure_password
validates :password, length: { minimum: 6 }
-
- ##
- # Create a random remember token for the user. This will be
- # changed every time the user creates a new session.
- #
- # By changing the cookie every new session, any hijacked sessions
- # (where the attacker steals a cookie to sign in as a certain
- # user) will expire the next time the user signs back in.
- #
- # The random string is of length 16 composed of A-Z, a-z, 0-9
- # This is the browser's cookie value.
- def User.new_remember_token
- SecureRandom.urlsafe_base64
- end
-
- ##
- # Encrypt the remember token.
- # This is the encrypted version of the cookie stored on
- # the database.
- #
- # The reasoning for storing a hashed token is so that even if
- # the database is compromised, the attacker won't be able to use
- # the remember tokens to sign in.
- def User.hash(token)
- Digest::SHA1.hexdigest(token.to_s)
- end
-
- ##
- # SHA-1 (Secure Hash Algorithm) is a US engineered hash
- # function that produces a 20 byte hash value which typically
- # forms a hexadecimal number 40 digits long.
- # The reason I am not using the Bcrypt algorithm is because
- # SHA-1 is much faster and I will be calling this on
- # every page a user accesses.
- #
- # https://en.wikipedia.org/wiki/SHA-1
-
-
- # Everything under private is hidden so you cannot call.
- private
-
- ##
- # Create_remember_token in order to ensure a user always has
- # a remember token.
- def create_remember_token
- self.remember_token = User.hash(User.new_remember_token)
- end
-
- ##
- # In order to ensure that someone did not accidentally submit
- # two accounts rapidly (which would throw off the validates
- # for user_name and email), I added an index to the Users
- # email and user_name in the database to ensure uniqueness
- # This also gives and index to the user_name and email
- # so finding a user SHOULD be easier for the database.
end
diff --git a/app/views/matches/index.html.erb b/app/views/matches/index.html.erb
index 4193f16..0f86da6 100644
--- a/app/views/matches/index.html.erb
+++ b/app/views/matches/index.html.erb
@@ -36,9 +36,9 @@
width="<%= 300 * @matches.count / 2 + 50 %>" height="<%= 200 * @matches.count + 50 %>"
xmlns="http://www.w3.org/2000/svg">
- <% @matches.each do |tournament | %>
+ <% (1..@matches.count).each do |i| %>
<g class="svg-match" >
-
+
</g>
<% end %>
diff --git a/app/views/remote_usernames/_form.html.erb b/app/views/remote_usernames/_form.html.erb
new file mode 100644
index 0000000..5da1f8f
--- /dev/null
+++ b/app/views/remote_usernames/_form.html.erb
@@ -0,0 +1,29 @@
+<%= form_for(@remote_username) do |f| %>
+ <% if @remote_username.errors.any? %>
+ <div id="error_explanation">
+ <h2><%= pluralize(@remote_username.errors.count, "error") %> prohibited this remote_username from being saved:</h2>
+
+ <ul>
+ <% @remote_username.errors.full_messages.each do |msg| %>
+ <li><%= msg %></li>
+ <% end %>
+ </ul>
+ </div>
+ <% end %>
+
+ <div class="field">
+ <%= f.label :game_id %><br>
+ <%= f.text_field :game_id %>
+ </div>
+ <div class="field">
+ <%= f.label :user_id %><br>
+ <%= f.text_field :user_id %>
+ </div>
+ <div class="field">
+ <%= f.label :user_name %><br>
+ <%= f.text_field :user_name %>
+ </div>
+ <div class="actions">
+ <%= f.submit %>
+ </div>
+<% end %>
diff --git a/app/views/remote_usernames/edit.html.erb b/app/views/remote_usernames/edit.html.erb
new file mode 100644
index 0000000..52d4b37
--- /dev/null
+++ b/app/views/remote_usernames/edit.html.erb
@@ -0,0 +1,6 @@
+<h1>Editing remote_username</h1>
+
+<%= render 'form' %>
+
+<%= link_to 'Show', @remote_username %> |
+<%= link_to 'Back', remote_usernames_path %>
diff --git a/app/views/remote_usernames/index.html.erb b/app/views/remote_usernames/index.html.erb
new file mode 100644
index 0000000..14f5876
--- /dev/null
+++ b/app/views/remote_usernames/index.html.erb
@@ -0,0 +1,31 @@
+<h1>Listing remote_usernames</h1>
+
+<table>
+ <thead>
+ <tr>
+ <th>Game</th>
+ <th>User</th>
+ <th>User name</th>
+ <th></th>
+ <th></th>
+ <th></th>
+ </tr>
+ </thead>
+
+ <tbody>
+ <% @remote_usernames.each do |remote_username| %>
+ <tr>
+ <td><%= remote_username.game %></td>
+ <td><%= remote_username.user %></td>
+ <td><%= remote_username.user_name %></td>
+ <td><%= link_to 'Show', remote_username %></td>
+ <td><%= link_to 'Edit', edit_remote_username_path(remote_username) %></td>
+ <td><%= link_to 'Destroy', remote_username, method: :delete, data: { confirm: 'Are you sure?' } %></td>
+ </tr>
+ <% end %>
+ </tbody>
+</table>
+
+<br>
+
+<%= link_to 'New Remote username', new_remote_username_path %>
diff --git a/app/views/remote_usernames/index.json.jbuilder b/app/views/remote_usernames/index.json.jbuilder
new file mode 100644
index 0000000..c9fbc0f
--- /dev/null
+++ b/app/views/remote_usernames/index.json.jbuilder
@@ -0,0 +1,4 @@
+json.array!(@remote_usernames) do |remote_username|
+ json.extract! remote_username, :id, :game_id, :user_id, :user_name
+ json.url remote_username_url(remote_username, format: :json)
+end
diff --git a/app/views/remote_usernames/new.html.erb b/app/views/remote_usernames/new.html.erb
new file mode 100644
index 0000000..b9cfcf4
--- /dev/null
+++ b/app/views/remote_usernames/new.html.erb
@@ -0,0 +1,5 @@
+<h1>New remote_username</h1>
+
+<%= render 'form' %>
+
+<%= link_to 'Back', remote_usernames_path %>
diff --git a/app/views/remote_usernames/show.html.erb b/app/views/remote_usernames/show.html.erb
new file mode 100644
index 0000000..416ca9d
--- /dev/null
+++ b/app/views/remote_usernames/show.html.erb
@@ -0,0 +1,19 @@
+<p id="notice"><%= notice %></p>
+
+<p>
+ <strong>Game:</strong>
+ <%= @remote_username.game %>
+</p>
+
+<p>
+ <strong>User:</strong>
+ <%= @remote_username.user %>
+</p>
+
+<p>
+ <strong>User name:</strong>
+ <%= @remote_username.user_name %>
+</p>
+
+<%= link_to 'Edit', edit_remote_username_path(@remote_username) %> |
+<%= link_to 'Back', remote_usernames_path %>
diff --git a/app/views/remote_usernames/show.json.jbuilder b/app/views/remote_usernames/show.json.jbuilder
new file mode 100644
index 0000000..1a0f6f9
--- /dev/null
+++ b/app/views/remote_usernames/show.json.jbuilder
@@ -0,0 +1 @@
+json.extract! @remote_username, :id, :game_id, :user_id, :user_name, :created_at, :updated_at
diff --git a/app/views/tournaments/_form.html.erb b/app/views/tournaments/_form.html.erb
index 3dadbf7..38855a0 100644
--- a/app/views/tournaments/_form.html.erb
+++ b/app/views/tournaments/_form.html.erb
@@ -24,6 +24,26 @@
<%= f.number_field :status %>
</div>
<div class="field">
+ <%= f.label :min_players_per_team %><br>
+ <%= f.number_field :min_players_per_team %>
+ </div>
+ <div class="field">
+ <%= f.label :max_players_per_team %><br>
+ <%= f.number_field :max_players_per_team %>
+ </div>
+ <div class="field">
+ <%= f.label :min_teams_per_match %><br>
+ <%= f.number_field :min_teams_per_match %>
+ </div>
+ <div class="field">
+ <%= f.label :max_teams_per_match %><br>
+ <%= f.number_field :max_teams_per_match %>
+ </div>
+ <div class="field">
+ <%= f.label :set_rounds %><br>
+ <%= f.number_field :set_rounds %>
+ </div>
+ <div class="field">
<%= f.label :randomized_teams %><br>
<%= f.check_box :randomized_teams %>
</div>
diff --git a/app/views/tournaments/index.json.jbuilder b/app/views/tournaments/index.json.jbuilder
index 32587df..4038f04 100644
--- a/app/views/tournaments/index.json.jbuilder
+++ b/app/views/tournaments/index.json.jbuilder
@@ -1,4 +1,4 @@
json.array!(@tournaments) do |tournament|
- json.extract! tournament, :id, :name, :game_id, :status, :randomized_teams
+ json.extract! tournament, :id, :name, :game_id, :status, :min_players_per_team, :max_players_per_team, :min_teams_per_match, :max_teams_per_match, :set_rounds, :randomized_teams
json.url tournament_url(tournament, format: :json)
end
diff --git a/app/views/tournaments/show.html.erb b/app/views/tournaments/show.html.erb
index df85dcf..b771701 100644
--- a/app/views/tournaments/show.html.erb
+++ b/app/views/tournaments/show.html.erb
@@ -3,7 +3,7 @@
</h2>
<div class="progress">
- <%= tag("div", {:class => "progress-bar progress-bar-warning", :style => "width: " +(@tournament.players.count * 100 / (@tournament.min_players_per_team * @tournament.min_teams_per_match)).to_s + "%", "aria-valuemax" => "100", "aria-valuemin" => "0", "aria-valuenow" => (@tournament.players.count * 100 / (@tournament.min_players_per_team * @tournament.min_teams_per_match)).to_s, "role" => "progressbar"}) %>
+ <%= tag("div", {:id => "prog-bar", :class => "progress-bar progress-bar-warning", :style => "width: " +(@tournament.players.count * 100 / (@tournament.min_players_per_team * @tournament.min_teams_per_match)).to_s + "%", "aria-valuemax" => "100", "aria-valuemin" => "0", "aria-valuenow" => (@tournament.players.count * 100 / (@tournament.min_players_per_team * @tournament.min_teams_per_match)).to_s, "role" => "progressbar"}) %>
<span class="sr-only">60% Complete (warning)</span>
</div>
</div>
@@ -11,45 +11,70 @@
<span id="tournament-side-params">
+<p>
+ <strong>Status:</strong>
+ <% if @tournament.status == 0 %>
+ Waiting for players...
+ <% else %>
+ Started
+ <% end %>
+</p>
+
+<p>
+ <strong>Min players per team:</strong>
+ <%= @tournament.min_players_per_team %>
+</p>
+
+<p>
+ <strong>Max players per team:</strong>
+ <%= @tournament.max_players_per_team %>
+</p>
+
+<p>
+ <strong>Min teams per match:</strong>
+ <%= @tournament.min_teams_per_match %>
+</p>
+
+<p>
+ <strong>Max teams per match:</strong>
+ <%= @tournament.max_teams_per_match %>
+</p>
+
+<p>
+ <strong>Set rounds:</strong>
+ <%= @tournament.set_rounds %>
+</p>
+
+<p>
+ <strong>Min players per team:</strong>
+ <%= @tournament.min_players_per_team %>
+</p>
+
+<p>
+ <strong>Max players per team:</strong>
+ <%= @tournament.max_players_per_team %>
+</p>
+
+<p>
+ <strong>Min teams per match:</strong>
+ <%= @tournament.min_teams_per_match %>
+</p>
+
+<p>
+ <strong>Max teams per match:</strong>
+ <%= @tournament.max_teams_per_match %>
+</p>
+
+<p>
+ <strong>Set rounds:</strong>
+ <%= @tournament.set_rounds %>
+</p>
+
+<p>
+ <strong>Randomized teams:</strong>
+ <%= @tournament.randomized_teams %>
+</p>
- <p>
- <strong>Status:</strong>
- <% if @tournament.status == 0 %>
- Waiting for players...
- <% else %>
- Started
- <% end %>
- </p>
-
- <p>
- <strong>Min players per team:</strong>
- <%= @tournament.min_players_per_team %>
- </p>
-
- <p>
- <strong>Max players per team:</strong>
- <%= @tournament.max_players_per_team %>
- </p>
-
- <p>
- <strong>Min teams per match:</strong>
- <%= @tournament.min_teams_per_match %>
- </p>
-
- <p>
- <strong>Max teams per match:</strong>
- <%= @tournament.max_teams_per_match %>
- </p>
-
- <p>
- <strong>Set rounds:</strong>
- <%= @tournament.set_rounds %>
- </p>
-
- <p>
- <strong>Randomized teams:</strong>
- <%= @tournament.randomized_teams %>
- </p>
</span>
<div >
@@ -65,6 +90,7 @@
<h3 div="players-needed">Hmmm.... nobody's here yet! You and your friends should join the tournament.</h3>
<% end %>
+<div class="leave-buttons">
<%# If user can join, and user hasn't joined already, show the join tournment tag %>
<% if @tournament.joinable_by?(current_user) && !@tournament.players.include?(current_user) %>
<%= form_tag(tournament_path(@tournament), method: "put") do %>
@@ -94,8 +120,29 @@
<%= link_to 'Back', tournaments_path %> |
<%= link_to 'Cancel Tournament', @tournament, method: :delete, data: { confirm: 'Are you sure?' } %>
<% end %>
-
+</div>
<%end %>
</div>
+<script>
+function donehandle( tournament ) {
+ if ( console && console.log ) {
+ var here = tournament["players"].length;
+ var needed = (tournament["min_teams_per_match"] * tournament["min_players_per_team"]);
+ var pct_complete = here / needed;
+ $("#prog-bar").width( (pct_complete * 100) +"%");
+ $("#players-needed").text(here + " " + (here==1?"player has":"players have") + " signed up. " + needed + " players needed. ");
+ players = "";
+ for (var i = 0; i < tournament["players"].length; i++) {
+ players = players+"<li><span class=\"black\">"+tournament["players"][i]["user_name"]+"</span></li>"
+ }
+ $("#tournament-users").html(players);
+
+ }
+ setTimeout(function(){$.ajax({url: "<%= url_for @tournament %>.json"}).done(donehandle)}, 3000);
+}
+
+$.ajax({url: "<%= url_for @tournament %>.json"})
+ .done(donehandle);
+</script>
diff --git a/app/views/tournaments/show.json.jbuilder b/app/views/tournaments/show.json.jbuilder
index d543c76..27fd5c0 100644
--- a/app/views/tournaments/show.json.jbuilder
+++ b/app/views/tournaments/show.json.jbuilder
@@ -1 +1 @@
-json.extract! @tournament, :id, :name, :game_id, :status, :randomized_teams, :created_at, :updated_at
+json.extract! @tournament, :id, :name, :game_id, :status, :min_players_per_team, :max_players_per_team, :min_teams_per_match, :max_teams_per_match, :set_rounds, :randomized_teams, :created_at, :updated_at