FIX: Create group membership request on behalf of user.

This commit is contained in:
Guo Xiang Tan
2017-06-13 17:10:14 +09:00
parent c5caa9cf71
commit a5d3abc9b6
10 changed files with 84 additions and 52 deletions

View File

@ -5,7 +5,8 @@ class GroupsController < ApplicationController
:mentionable,
:update,
:messages,
:histories
:histories,
:request_membership
]
skip_before_filter :preload_json, :check_xhr, only: [:posts_feed, :mentions_feed]
@ -136,16 +137,6 @@ class GroupsController < ApplicationController
}
end
def owners
group = find_group(:group_id)
owners = group.users.where('group_users.owner')
.order("users.last_seen_at DESC")
.limit(5)
render_serialized(owners, GroupUserSerializer)
end
def add_members
group = Group.find(params[:id])
group.public ? ensure_logged_in : guardian.ensure_can_edit!(group)
@ -238,7 +229,27 @@ class GroupsController < ApplicationController
else
render_json_error(group)
end
end
def request_membership
unless current_user.staff?
RateLimiter.new(current_user, "request_group_membership", 1, 1.day).performed!
end
group = find_group(:id)
group_name = group.name
username = current_user.username
post = PostCreator.new(current_user,
title: I18n.t('groups.request_membership_pm.title', group_name: group_name),
raw: I18n.t('groups.request_membership_pm.body', group_name: group_name),
archetype: Archetype.private_message,
target_usernames: username,
target_group_names: group_name,
skip_validations: true
).create!
render json: success_json.merge(relative_url: post.topic.relative_url)
end
def set_notifications