Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【vte.cx入門】10.グループを作成し共有フォルダを作成する

More than 5 years have passed since last update.

vte.cxではグループを作成し、グループ独自の共有フォルダを作成できます。

vte.cxの共有フォルダ機能には以下のようなメリットがあります。

  • グループを作成することで、複数のユーザーの権限をまとめて管理できます。
  • グループごとにユーザ検索ができるようになります。
  • 共有フォルダを作成することで、グループ内で情報共有ができるようになります。

今回は共有フォルダを作成する流れを説明します。

大まかな流れ

共有フォルダの作成は大まかに以下のような流れになります。

  1. グループを作成する
  2. グループにメンバーを追加する
  3. グループの共有フォルダを作成する

この一通りの流れを実行すると「共有フォルダ」が作成できます。

1. グループを作成する

グループとは

  • 集団(しゅうだん)
  • 組(くみ)
  • チーム

例えば、一つのアプリの管理を行うとき、「データを登録するグループ(Aグループ)」と「データを編集するグループ(Bグループ)」に分けたりする場合があると思います。そういったグループ分けをvte.cxでは行うことができます。

/{uid}/groupにグループを作成する

/{uid}/groupとは

ユーザ作成時に自動的に登録される特別なフォルダです。
グループフォルダと呼びます。
/{uid}/groupでは{uid}が所属しているグループを管理します。

※ uidについてはこちらをご覧ください。

グループ用フォルダの例

今回は例として、「hoge」グループを作成したいと思います。
また、hogeグループを作成するユーザのuidを「123」とします。

以下のデータを/123/group配下に登録すると「hoge」グループが作成できます。

<entry>
  <contributor>
    <uri>urn:vte.cx:acl:123,CRUD.</uri>
  </contributor>
  <contributor>
    <uri>urn:vte.cx:acl:-,R.</uri>
  </contributor>
  <contributor>
    <uri>urn:vte.cx:acl:/123/group/hoge,CRUD/</uri>
  </contributor>
  <link rel="self" href="/123/group/hoge" />
</entry>

グループ用フォルダの解説はこちら

2. グループにメンバーを追加する

hogeグループの作成ができたら、今度はhogeグループにメンバーを追加します。

作成したグループデータにメンバーをリンクさせる

以下のように、作成したグループデータにlink項目のrel="alternate"を追加すると、任意のメンバーを追加することができます。

<entry>
  <contributor>
    <uri>urn:vte.cx:acl:123,CRUD.</uri>
  </contributor>
  <contributor>
    <uri>urn:vte.cx:acl:-,R.</uri>
  </contributor>
  <contributor>
    <uri>urn:vte.cx:acl:/123/group/hoge,CRUD/</uri>
  </contributor>
  <id>/123/group/hoge,1</id>
  <link rel="self" href="/123/group/hoge" />
  <link rel="alternate" href="/{メンバーのuid}/group/hoge" />    ←   このlink項目を追加する
</entry>

あとはこれをPUTで更新するだけです。(id項目のリビジョン番号は一致させる必要があります。)

基本はこれだけでメンバーの追加ができます。
link項目のrel="alternate"について解説はこちら

追加されたメンバーが確認して承認を行う(署名機能)

グループにメンバーを追加することは誰にでもできます。
追加されたメンバーはそれが意図したグループなのかの確認を行うために、「私はこのグループに参加します」と宣言(承認)する必要があります。

その時に署名機能を利用して署名することで承認したことになります。

123ユーザがhogeグループに987ユーザを追加した時、
987ユーザは以下のリクエストを実行し、署名をしてください。

署名のリクエスト
PUT /987/group/hoge?_signature=1

_signatureの値は/123/group/hogeのリビジョン番号です。

署名が成功すると以下のレスポンスが返ってきます。

<feed>
  <title>200</title>
  <subtitle>A signature has been applied.</subtitle>
</feed>

署名後のグループデータ

<feed>
  <entry>
    <author>
      <uri>urn:vte.cx:created:123</uri>
    </author>
    <author>
      <uri>urn:vte.cx:updated:987</uri>
    </author>
    <id>/123/group/hoge,2</id>
    <link href="/123/group/hoge" rel="self"/>
    <link href="/987/group/hoge" rel="alternate" title="2,+x1l7fURrHFbv8XzP+170K1C+VkO6sWRLdhovElbjW0="/>
    <published>2015-12-08T11:39:54.698+09:00</published>
    <updated>2015-12-08T13:11:45.697+09:00</updated>
  </entry>
</feed>

link rel="alternate"のtitleの値に署名値がセットされています。
これで署名完了です。

その他の署名についての仕様はこちらをご参照ください。

3. グループの共有フォルダを作成する

メンバーに署名を行ってもらい、正式に追加できたら、/123/group/hoge配下に任意のデータを登録すれば、それがグループ内の共有フォルダになります。

/d
   /123
      /group
         /hoge
            /hoge_group_folder1    ←    hogeグループの共有フォルダ
            /hoge_group_folder2    ←    hogeグループの共有フォルダ
            /hoge_group_folder3    ←    hogeグループの共有フォルダ

これでグループ内での共有フォルダの作成方法を終わります。

その他のフォルダ共有の詳しい仕様はこちらをご参照ください。

ここから下は上記説明の補足説明となります。

グループ用フォルダの解説

・{uid}にCRUD権限を付与します。
(CRUD権限についてはこちらのACLの種類をご参照ください。)
※ グループを作成する際は必ず設定してください。

{uid}にCRUD権限
  <contributor>
    <uri>urn:vte.cx:acl:123,CRUD.</uri>
  </contributor>

・「link selfまたはエイリアスのユーザトップエントリーのユーザが参照できる」という権限を与えられます。
(「-(マイナス)」権限についてはこちらのACLの種類をご参照ください。)
※ グループを作成する際は必ず設定してください。

linkselfまたはエイリアスのユーザトップエントリーのユーザが参照できる権限
  <contributor>
    <uri>urn:vte.cx:acl:-,R.</uri>
  </contributor>

・「{uid}は/{uid}/group/hoge配下を自由に編集できる」という権限を与えられます。
※ グループを作成する際は必ず設定してください。

{uid}は/hoge配下を自由に編集できる権限
  <contributor>
    <uri>urn:vte.cx:acl:/123/group/hoge,CRUD/</uri>
  </contributor>

link項目のrel="alternate"でデータをリンクさせる

これはUnixのシンボリックリンクに似た機能です。
link項目のrel="alternate"を追加すると、どのようなことが起こるのか解説します。

  • メンバー1のuidを123とする
  • メンバー2のuidを987とする

/123/groupには、/hogeというデータがあるとします。

/123
   /group
      /hoge

一方、/987/groupには、/hogeというデータは存在しません。

/987
   /group
            ←  /hogeはない

これをlink項目のrel="alternate"を使用し、「/123/group/hoge」を「/987/group」にリンク付けると以下のようになります。

/987
   /group
      /hoge   ←  /123/groupの/hogeがここに作成される

/987/groupには実際に/hogeデータは登録していないが、/123/group/hogeがリンク付けされたので、/987/groupの配下に/123/groupの/hogeが作成された状態になります。

このリンク付けが行われている状態で/123/group/hogeの配下にデータを登録すると、/987/group/hogeにも反映されます。

/123
   /group
      /hoge
         /123_hoge1    ←   123ユーザが作成したデータ
/987
   /group
      /hoge            ←   リンクされた/123/group/hoge
         /123_hoge1    ←   123ユーザが作成したデータが/987にも反映される

これが、link項目のrel="alternate"の機能です。

どのようにリンクさせるのか

/123/group/hogeデータにリンク先(/987/group/hoge)をlink項目のrel="alternate"で指定します。

<entry>
    <link href="/123/group/hoge" rel="self" />       ←  実データ
    <link href="/987/group/hoge" rel="alternate" />  ←  リンク先
</entry>
takeyama
AngularJS始めたばかりの初心者です
http://reflexworks.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away