Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ワークスペース設定ページの実装 #279

Open
yu23ki14 opened this issue Jan 27, 2025 · 1 comment
Open

ワークスペース設定ページの実装 #279

yu23ki14 opened this issue Jan 27, 2025 · 1 comment
Assignees

Comments

@yu23ki14
Copy link
Member

yu23ki14 commented Jan 27, 2025

概要

  • ワークスペースのアイコン、名前、説明と、役割の作成やアサインなどの権限管理ができるページを作成
  • 設定ページへの導線をつくる

UIは以下のイメージ

Image

設定ページについて

  • ワークスペースのアイコン、名前、説明については、HatsProtocolのドキュメントを見ながら実施。
  • 権限設定については以下に詳細を記載

権限設定

役割の新規作成

  • 新規作成はHatsHatCreatorModuleをつかって行うようにします。(TopHatのWearerもできる)
  • HatsCreateHatModuleに権限追加と権限削除のgrantCreateHatAuthorityとrevokeCreateHatAuthorityの2つがあります。
  • また、あるユーザーが権限を持っているかチェックするhasCreateHatAuthorityがあります。
  • 権限追加できる権限を持っているのはデフォルトでTopHatのオーナーです。Ownableのライブラリをつかっているだけなので変更することもできます。
  • 現在誰が権限を持っているのかリストで取れるGoldskyのエンドポイントがあります、それをつかってフォームのデフォルト値をつくってください。

役割のアサインと剥奪

  • 役割のアサインと剥奪はHatsTimeFrameModuleをつかって行うようにします。
  • HatsTimeFrameModuleに権限追加と権限削除のgrantOperationAuthorityとrevokeOperationAuthorityの2つがあります。
  • また、あるユーザーが権限を持っているかチェックするhasOperationAuthorityがあります。
  • 権限追加できる権限を持っているのはデフォルトでTopHatのオーナーです。Ownableのライブラリをつかっているだけなので変更することもできます。
  • 現在誰が権限を持っているのかリストで取れるGoldskyのエンドポイントがあります、それをつかってフォームのデフォルト値をつくってください。

設定ページへの導線について

ヘッダーメニューのプロフィールアイコンを押すと出てくるtooltipと同じように、ワークスペースアイコンを押すとtooltipを表示させて、設定ページとワークスペース一覧ページに遷移させるリンクをおいてください。

@yawn-c111 yawn-c111 self-assigned this Jan 27, 2025
@yu23ki14
Copy link
Member Author

@yawn-c111
ワークスペースに紐づく、HatsTimeFrameModuleとHatsHatCreatorModuleの権限状態(誰が権限もってるか)をGoldskyから取れるようにしました。
古いワークスペースだとデータとれないので、新しくつくってください。

useWorkspaceのhooksから取れるデータの中に、以下のようなオブジェクトが入っています。
この例だと、HatsTimeFrameModuleの権限を持っている人がいて authorized がtrueの人だけが権限を持っています。Subgraphはデータ削除が基本できないので、一度与えられて権限がなくなった場合は authorized をfalseにしています。なので、これだと 0x777ee5eeed30c3712bee6c83260d786857d9c556 のみが権限を持っているということになります。

"hatsTimeFrameModule": {
  "id": "0xcd8dfa14a3f1f955168cd23cf9e824407b8fb506",
  "authorities": [
    {
      "address": "0x777ee5eeed30c3712bee6c83260d786857d9c556",
      "authorised": true,
      "blockNumber": "7596080",
      "blockTimestamp": "1738155720",
      "id": "0xcd8dfa14a3f1f955168cd23cf9e824407b8fb506-0x777ee5eeed30c3712bee6c83260d786857d9c556",
      "workspaceId": "833"
    },
    {
      "address": "0xdcb93093424447bf4fe9df869750950922f1e30b",
      "authorised": false,
      "blockNumber": "7596214",
      "blockTimestamp": "1738157328",
      "id": "0xcd8dfa14a3f1f955168cd23cf9e824407b8fb506-0xdcb93093424447bf4fe9df869750950922f1e30b",
      "workspaceId": "833"
    }
  ]
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants