承認プロセスについてひどく混乱しています。私は、人々が一緒に働くグループを持つWebアプリに取り組んでいます。したがって、グループ内のすべての人が情報を利用できます。また、グループを「フォロー」する機能もあります (Twitter を聞いたことがありますか?)。これにより、グループのフォロワーもグループのデータにアクセスできますが、読み取り専用になります (私の場合、いくつかの「投稿」、はい)。 fbのような投稿)。問題は人々を承認することです -良い仕方。実際、使用している sql クエリに認証作業を直接フィードしたため、作業は順調に進んでいます - WHERE 句のレコードを制限することによって。しかし、何らかの理由で、私はこの方法が悪いと思います-非常に悪いです。認可作業をコードに追加できれば、気分が良くなります。しかし、このアプローチが良いのかもしれません。そうである場合は、そのように伝えるか、これを行うためのより良い方法を教えてください。はい、私の問題を理解するのに役立つ場合は、RESTful API を作成しています。最後の注意として、私はこれらすべての初心者から中級者に過ぎないので、問題が適切に説明されていないと感じた場合はご容赦ください。もう 1 つ、これは facebook や twitter のコピー、またはその両方を組み合わせたものではありません。ありがとう!
Ok。データ アクセス レイヤーのコード サンプルを含める必要があるかもしれません。それは私の問題を理解しやすくするはずです。これは、指定された ID を持つ「プロジェクト」を返すコードです。プロジェクトには、プロジェクト メンバー (project_members テーブルにリストされている) またはそれをフォローしているユーザー (project_followers テーブルにリストされている) がアクセスできます。
public function getProjectById($id) {
$auth = new Auth();
$userid = $auth->getCurrentUserId();
$sql = "SELECT P.id, P.userId, P.name, P.description, P.creationTime, P.startTime, P.endTime, P.isOpen FROM projects P INNER JOIN project_members PM ON PM.projectid = P.id AND (P.id = '{id}') AND (PM.userId = '{userid}' OR P.isOpen = 1)";
return $this->result($sql, array( "userid" => $userid, "id" => $id ));
}
さて、なんらかの理由で、クエリが汚いことがわかりました。きれいかもしれませんが、この方法で承認を処理するのは良いことですか。それとも他に良い方法はありますか?