仅允许用户查看属于他们的团队

时间:2017-12-14 05:25:09

标签: elixir phoenix-framework

我在申请中了解teams。现在如果我去团队的节目页面,当前团队的ID就在params中,应该如此。但是任何用户都可以访问任何团队,因为如果我将url更改为另一个现有团队,它将带我到那里。我想授权当前用户的网址。我怎样才能在凤凰城实现这一目标?

我目前正在使用Coherence进行身份验证。

注意:我意识到我没有显示任何代码示例,如果我有任何代码示例,我会的。说实话,我只是想指向正确的方向。我完全迷失了如何实现这一目标。

TEAMS belongs_to USER :: USERS have_many TEAMS

2 个答案:

答案 0 :(得分:1)

关系是has_many:users和belongs_to team

然后你可以像这样检查

 def user_is_member?(team_id, user_id) do
   user = Repo.get(User, user_id)
   team = Repo.get(Team, user.team_id)
   case team.id == team_id do
     true ->
       team
     _ ->
       false
   end
end

您可以将此用于授权。对于url,您可以检查可能对您有帮助的子路径。

答案 1 :(得分:0)

假设您将当前用户存储在current_user中,您可以使用:

query = from team in Teams, where: team.user_id == ^current_user.id

Repo.get!(query, team_id)

或者,您可以使用Repo.get_by!

Repo.get_by!(Team, user_id: current_user.id, id: team_id)