Class: TurboChat::Permission
- Inherits:
-
Object
- Object
- TurboChat::Permission
show all
- Includes:
- MentionSupport, Support
- Defined in:
- lib/turbo_chat/permission.rb,
lib/turbo_chat/permission/support.rb,
lib/turbo_chat/permission/mention_support.rb
Defined Under Namespace
Modules: MentionSupport, Support
Constant Summary
collapse
- ROLE_MENTION_TOKEN_PATTERN =
/\A@[A-Z][A-Z0-9_]{0,31}\z/.freeze
- MEMBER_MENTION_TOKEN_PATTERN =
/\A@[a-z0-9_]{1,32}\z/i.freeze
Instance Attribute Summary collapse
Instance Method Summary
collapse
#can_mention_all?, #can_mention_members?, #can_mention_roles?, #can_mention_token?
Constructor Details
#initialize(participant, chat = nil) ⇒ Permission
Returns a new instance of Permission.
13
14
15
16
|
# File 'lib/turbo_chat/permission.rb', line 13
def initialize(participant, chat = nil)
@participant = participant
@chat = chat
end
|
Instance Attribute Details
#chat ⇒ Object
Returns the value of attribute chat.
11
12
13
|
# File 'lib/turbo_chat/permission.rb', line 11
def chat
@chat
end
|
#participant ⇒ Object
Returns the value of attribute participant.
11
12
13
|
# File 'lib/turbo_chat/permission.rb', line 11
def participant
@participant
end
|
Instance Method Details
#can_ban_member?(target_membership = nil) ⇒ Boolean
40
|
# File 'lib/turbo_chat/permission.rb', line 40
def can_ban_member?(target_membership = nil) = can_manage_target_membership?(:ban_member, target_membership)
|
#can_close_chat? ⇒ Boolean
66
|
# File 'lib/turbo_chat/permission.rb', line 66
def can_close_chat? = can_view_chat? && role_permission?(:close_chat)
|
#can_create_chat? ⇒ Boolean
25
|
# File 'lib/turbo_chat/permission.rb', line 25
def can_create_chat? = participant_present?
|
#can_delete_message?(message = nil) ⇒ Boolean
46
47
48
49
50
51
52
|
# File 'lib/turbo_chat/permission.rb', line 46
def can_delete_message?(message = nil)
return false unless can_view_chat? && role_permission?(:delete_message)
return true if message.nil?
return false unless message_in_chat?(message)
can_act_on_target_membership?(membership_for(message.participant))
end
|
#can_edit_message?(message = nil) ⇒ Boolean
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/turbo_chat/permission.rb', line 54
def can_edit_message?(message = nil)
return false unless can_post_message?
return true if message.nil?
return false unless message_in_chat?(message)
participant_type, participant_id = actor_identity
return false if participant_type.blank? || participant_id.blank?
message.participant_type.to_s == participant_type &&
message.participant_id.to_s == participant_id.to_s
end
|
#can_grant_member_permissions?(target_membership = nil) ⇒ Boolean
44
|
# File 'lib/turbo_chat/permission.rb', line 44
def can_grant_member_permissions?(target_membership = nil) = can_manage_target_membership?(:grant_member_permissions, target_membership)
|
#can_invite_member? ⇒ Boolean
42
|
# File 'lib/turbo_chat/permission.rb', line 42
def can_invite_member? = can_view_chat? && role_permission?(:invite_member)
|
#can_mute_member?(target_membership = nil) ⇒ Boolean
36
|
# File 'lib/turbo_chat/permission.rb', line 36
def can_mute_member?(target_membership = nil) = can_manage_target_membership?(:mute_member, target_membership)
|
#can_post_message? ⇒ Boolean
27
28
29
30
31
32
33
34
|
# File 'lib/turbo_chat/permission.rb', line 27
def can_post_message?
can_view_chat? &&
!chat_input_disabled? &&
role_permission?(:post_message) &&
!chat_closed? &&
!actor_membership_muted? &&
!actor_membership_timed_out?
end
|
#can_reopen_chat? ⇒ Boolean
68
|
# File 'lib/turbo_chat/permission.rb', line 68
def can_reopen_chat? = can_view_chat? && role_permission?(:reopen_chat)
|
#can_timeout_member?(target_membership = nil) ⇒ Boolean
38
|
# File 'lib/turbo_chat/permission.rb', line 38
def can_timeout_member?(target_membership = nil) = can_manage_target_membership?(:timeout_member, target_membership)
|
#can_view_chat? ⇒ Boolean
18
19
20
21
22
23
|
# File 'lib/turbo_chat/permission.rb', line 18
def can_view_chat?
return false unless participant_present?
return true unless chat_present?
actor_membership_active? && role_permission?(:view_chat)
end
|