Skip to content

Commit

Permalink
Merge pull request #109 from AresMUSH/dev
Browse files Browse the repository at this point in the history
Beta 84
  • Loading branch information
lynnfaraday authored Aug 23, 2020
2 parents 8946123 + 438db47 commit 4971334
Show file tree
Hide file tree
Showing 48 changed files with 275 additions and 105 deletions.
4 changes: 2 additions & 2 deletions install/game.distr/config/chargen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,10 @@ chargen:
help: groups
ranks:
help: ranks
background:
help: backgrounds
abilities:
help: skills
background:
help: backgrounds
desc:
help: descriptions
hooks:
Expand Down
3 changes: 1 addition & 2 deletions plugins/achievements/helpers.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
module AresMUSH
module Achievements
def self.can_manage_achievements?(actor)
return false if !actor
return actor.has_permission?("manage_achievements")
actor && actor.has_permission?("manage_achievements")
end

def self.all_achievements
Expand Down
5 changes: 5 additions & 0 deletions plugins/arescentral/web/handle_link_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ def handle(request)
enactor = request.enactor
handle_name = (request.args[:handle_name] || "").titlecase
link_code = request.args[:link_code]
pw = request.args[:confirm_password]

error = Website.check_login(request)
return error if error
Expand All @@ -13,6 +14,10 @@ def handle(request)
return { error: t('arescentral.character_already_linked') }
end

if (!enactor.compare_password(pw))
return { error: t('login.invalid_password') }
end

error = AresCentral.link_handle(enactor, handle_name, link_code)
return { error: error } if error

Expand Down
9 changes: 4 additions & 5 deletions plugins/channels/helpers.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
module AresMUSH
module Channels
def self.can_manage_channels?(actor)
return false if !actor
actor.has_permission?("manage_channels")
actor && actor.has_permission?("manage_channels")
end

def self.get_channel_options(char, channel)
Expand All @@ -28,7 +27,7 @@ def self.find_common_channels(channels, other_char)
if (intersection.empty?)
return nil
end
intersection = intersection.map { |c| Channels.display_name(nil, c, false) }
intersection = intersection.map { |c| Channels.display_name(other_char, c, false) }
Channels.name_with_markers(intersection.join(", "))
end

Expand Down Expand Up @@ -155,13 +154,13 @@ def self.channel_for_alias(char, channel_alias)
def self.can_join_channel?(char, channel)
return true if channel.join_roles.empty?
return true if Channels.can_manage_channels?(char)
return char.has_any_role?(channel.join_roles)
return char && char.has_any_role?(channel.join_roles)
end

def self.can_talk_on_channel?(char, channel)
return true if channel.talk_roles.empty?
return true if Channels.can_manage_channels?(char)
return char.has_any_role?(channel.talk_roles)
return char && char.has_any_role?(channel.talk_roles)
end

def self.with_an_enabled_channel(name, client, enactor, &block)
Expand Down
10 changes: 5 additions & 5 deletions plugins/chargen/helpers.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module AresMUSH
module Chargen
def self.can_approve?(actor)
actor.has_permission?("manage_apps")
Chargen.can_manage_apps?(actor)
end

def self.bg_app_review(char)
Expand All @@ -10,11 +10,11 @@ def self.bg_app_review(char)
end

def self.can_manage_bgs?(actor)
actor.has_permission?("manage_apps")
actor && actor.has_permission?("manage_apps")
end

def self.can_manage_apps?(actor)
actor.has_permission?("manage_apps")
actor && actor.has_permission?("manage_apps")
end

def self.can_view_bgs?(actor)
Expand Down Expand Up @@ -194,7 +194,7 @@ def self.reject_char(enactor, model, notes)
return nil
end

def self.build_app_review_info(char)
def self.build_app_review_info(char, enactor)
abilities_app = FS3Skills.is_enabled? ? MushFormatter.format(FS3Skills.app_review(char)) : nil
demographics_app = MushFormatter.format Demographics.app_review(char)
bg_app = MushFormatter.format Chargen.bg_app_review(char)
Expand All @@ -216,7 +216,7 @@ def self.build_app_review_info(char)
id: char.id,
job: char.approval_job ? char.approval_job.id : nil,
custom: custom_app,
allow_web_submit: Global.read_config("chargen", "allow_web_submit")
allow_web_submit: (char == enactor) && Global.read_config("chargen", "allow_web_submit")
}
end
end
Expand Down
3 changes: 3 additions & 0 deletions plugins/chargen/public/chargen_api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ def self.is_chargen_locked?(char)
end

def self.check_chargen_locked(target)
# Note: Most of these commands work on enactor-only, so we allow admins to change whatever they want
# on themselves. The commands that allow other players separately check whether to allow admins to override
# the lock.
return nil if target.is_admin?
return t('chargen.cant_be_changed') if target.is_approved?
return t('chargen.app_in_progress') if target.chargen_locked
Expand Down
4 changes: 2 additions & 2 deletions plugins/chargen/web/app_review_request_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ def handle(request)
end

if (char.is_approved?)
return { error: t('chargen.already_approved') }
return { error: t('chargen.already_approved', :name => char.name) }
end

if (!char.approval_job)
return { error: t('chargen.no_app_submitted', :name => char.name) }
end

return Chargen.build_app_review_info(char)
return Chargen.build_app_review_info(char, enactor)
end
end
end
Expand Down
29 changes: 21 additions & 8 deletions plugins/chargen/web/chargen_char_request_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,32 @@ module AresMUSH
module Chargen
class ChargenCharRequestHandler
def handle(request)
char = request.enactor

id = request.args[:id]
enactor = request.enactor
char = Character.find_one_by_name id
if (!char)
return { error: t('webportal.login_required') }
end

error = Website.check_login(request)
return error if error


if (char.is_approved?)
return { error: t('chargen.you_are_already_approved')}
end

if (Chargen.can_approve?(enactor))
can_approve = true
else
can_approve = false
if (char != enactor)
return { error: t('dispatcher.not_allowed') }
end

if (char.is_approved?)
return { error: t('chargen.you_are_already_approved')}
end

return { chargen_locked: true } if Chargen.is_chargen_locked?(char)
return { chargen_locked: true } if Chargen.is_chargen_locked?(char)
end

all_demographics = Demographics.all_demographics
demographics = {}
Expand Down Expand Up @@ -63,7 +75,8 @@ def handle(request)

{
id: char.id,
chargen_locked: char.chargen_locked,
chargen_locked: false,
can_approve: can_approve,
name: char.name,
demographics: demographics,
groups: groups,
Expand Down
22 changes: 16 additions & 6 deletions plugins/chargen/web/chargen_reset_request_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,28 @@ module AresMUSH
module Chargen
class ChargenResetRequestHandler
def handle(request)
char = request.enactor
chargen_data = request.args[:char]
id = request.args[:id]
enactor = request.enactor

error = Website.check_login(request)
return error if error

char = Character.find_one_by_name id
if (!char)
return { error: t('webportal.login_required') }
return { error: t('webportal.not_found') }
end

error = Website.check_login(request)
return error if error
if (!Chargen.can_approve?(enactor))
if (char != enactor)
return { error: t('dispatcher.not_allowed') }
end

error = Chargen.check_chargen_locked(char)
return { error: error } if error
end

error = Chargen.check_chargen_locked(char)
return { error: error } if error
Global.logger.info "Character reset for #{char.name} by #{enactor.name}."

Chargen.save_char(char, chargen_data)

Expand Down
24 changes: 16 additions & 8 deletions plugins/chargen/web/chargen_review_request_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,27 @@ module AresMUSH
module Chargen
class ChargenReviewRequestHandler
def handle(request)
char = request.enactor
id = request.args[:id]
enactor = request.enactor

error = Website.check_login(request)
return error if error

char = Character.find_one_by_name id
if (!char)
return { error: t('webportal.login_required') }
return { error: t('webportal.not_found') }
end

error = Website.check_login(request)
return error if error

error = Chargen.check_chargen_locked(char)
return { error: error } if error
if (!Chargen.can_approve?(enactor))
if (char != enactor)
return { error: t('dispatcher.not_allowed') }
end

error = Chargen.check_chargen_locked(char)
return { error: error } if error
end

return Chargen.build_app_review_info(char)
return Chargen.build_app_review_info(char, enactor)
end
end
end
Expand Down
25 changes: 17 additions & 8 deletions plugins/chargen/web/chargen_save_request_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,28 @@ module AresMUSH
module Chargen
class ChargenSaveRequestHandler
def handle(request)
char = request.enactor
chargen_data = request.args[:char]
id = request.args[:id]
enactor = request.enactor

error = Website.check_login(request)
return error if error

char = Character.find_one_by_name id
if (!char)
return { error: t('webportal.login_required') }
return { error: t('webportal.not_found') }
end

error = Website.check_login(request)
return error if error

error = Chargen.check_chargen_locked(char)
return { error: error } if error

if (!Chargen.can_approve?(enactor))
if (char != enactor)
return { error: t('dispatcher.not_allowed') }
end

error = Chargen.check_chargen_locked(char)
return { error: error } if error
end

Global.logger.info "Saving chargen data for #{char.name} by #{enactor.name}."
alerts = Chargen.save_char(char, chargen_data)

{
Expand Down
6 changes: 2 additions & 4 deletions plugins/demographics/helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ module AresMUSH
module Demographics

def self.can_set_demographics?(char)
return false if !char
char.has_permission?("manage_demographics")
char && char.has_permission?("manage_demographics")
end

def self.can_set_group?(char)
return false if !char
char.has_permission?("manage_demographics")
char && char.has_permission?("manage_demographics")
end

def self.all_demographics
Expand Down
3 changes: 2 additions & 1 deletion plugins/events/helpers.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
module AresMUSH
module Events
def self.can_manage_events?(actor)
actor.has_permission?("manage_events")
actor && actor.has_permission?("manage_events")
end

def self.ical_path
File.join(AresMUSH.game_path, 'calendar.ics')
end
Expand Down
2 changes: 1 addition & 1 deletion plugins/fs3skills/helpers/luck.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module AresMUSH
module FS3Skills
def self.can_manage_luck?(actor)
actor.has_permission?("manage_abilities")
actor && actor.has_permission?("manage_abilities")
end

def self.modify_luck(char, amount)
Expand Down
2 changes: 1 addition & 1 deletion plugins/fs3skills/helpers/utils.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module AresMUSH
module FS3Skills
def self.can_manage_abilities?(actor)
actor.has_permission?("manage_abilities")
actor && actor.has_permission?("manage_abilities")
end

def self.can_view_sheets?(actor)
Expand Down
2 changes: 1 addition & 1 deletion plugins/fs3skills/helpers/xp.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module AresMUSH
module FS3Skills
def self.can_manage_xp?(actor)
actor.has_permission?("manage_abilities")
actor && actor.has_permission?("manage_abilities")
end

def self.modify_xp(char, amount)
Expand Down
21 changes: 14 additions & 7 deletions plugins/fs3skills/web/chargen_char_request_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,28 @@ module AresMUSH
module FS3Skills
class ChargenCharRequestHandler
def handle(request)
char = request.enactor

id = request.args[:id]
enactor = request.enactor

char = Character.find_one_by_name id
if (!char)
return { error: t('webportal.login_required') }
end

error = Website.check_login(request)
return error if error

if (!Chargen.can_approve?(enactor))
if (char != enactor)
return { error: t('dispatcher.not_allowed') }
end

if (char.is_approved?)
return { error: t('chargen.you_are_already_approved')}
end
if (char.is_approved?)
return { error: t('chargen.you_are_already_approved')}
end

return { chargen_locked: true } if Chargen.is_chargen_locked?(char)

return { chargen_locked: true } if Chargen.is_chargen_locked?(char)
end

{
fs3_attributes: get_ability_list(char, char.fs3_attributes, :attribute),
Expand Down
Loading

0 comments on commit 4971334

Please sign in to comment.