質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

0回答

892閲覧

typescriptで権限の変更を行いたい

AfaWnc6

総合スコア4

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2019/11/18 06:41

前提・実現したいこと

SPFx(typescrit)でSharePointのアイテム(フォルダ、ファイル両方)の権限を変更するというプログラムを作成しています。
権限の変更にはRESTAPIを使用して以下の流れで処理を行っています。
1.現在の権限を取得
2.親権限を継承している場合は権限の継承を破棄
3.現在の権限を削除
4.指定された権限を付与

3.の処理を現在の権限を制限アクセスに変更という風に変えたいのですが、
権限の更新方法を探してみても現在の処理方法(一度権限を消してからつける)くらいしか見つかりません。

発生している問題・エラーメッセージ

ドキュメントライブラリ/フォルダA/ファイルBという構造の権限を変更する際に、以下の流れで処理を行った場合にファイルBの権限がなくなってしまう問題が発生しています。
1.ファイルBにユーザー1に投稿権限を付与
2.フォルダAのユーザー1に閲覧権限を付与

原因としては、
フォルダAに権限を付与する際に一度ユーザー1の権限を削除するため、ファイルBが持つ権限がなくなってしまうことが考えられます。

該当のソースコード

一部省略していますが、このような感じです。

typescript

1 2 public static SetDeleteRoleAssignements(spHttpClient, absoluteUrl: string, listGuId: string, itemId: string, principalId: string): Promise<any> { 3 let url: string = `${absoluteUrl}/_api/web/lists('${listGuId}')/items('${itemId}')/roleassignments/getbyprincipalid('${principalId}')`; 4 return spHttpClient.post( 5 url, 6 SPHttpClient.configurations.v1, 7 { 8 headers: { 9 'Accept': 'application/json;odata=nometadata', 10 'Content-type': 'application/json;odata=verbose', 11 'odata-version': '', 12 'X-HTTP-Method': 'DELETE' 13 } 14 } 15 ) 16 .then((response) => { 17 if (response.ok) { 18 const promiseResponse: Promise<any> = response.json(); 19 return promiseResponse.then((data) => { 20 return data as Promise<any>; 21 }); 22 } else { 23 return undefined; 24 } 25 }) 26 .catch((err) => { 27 return undefined; 28 }); 29 } 30 public static SetAddRoleAssignment(spHttpClient, absoluteUrl: string, listGuId: string, itemId: string, principalId: string, roleDefId: string): Promise<any> { 31 let url: string = `${absoluteUrl}/_api/web/lists('${listGuId}')/items('${itemId}')/roleassignments/addroleassignment(principalid='${principalId}',roledefid='${roleDefId}')`; 32 return spHttpClient.post( 33 url, 34 SPHttpClient.configurations.v1, 35 { 36 headers: { 37 'Accept': 'application/json;odata=nometadata', 38 'Content-type': 'application/json;odata=verbose', 39 'odata-version': '', 40 } 41 } 42 ) 43 .then((response) => { 44 if (response.ok) { 45 const promiseResponse: Promise<any> = response.json(); 46 return promiseResponse.then((data) => { 47 return data as Promise<any>; 48 }); 49 } else { 50 return undefined; 51 } 52 }) 53 .catch((err) => { 54 return undefined; 55 }); 56 } 57 58 private AssignmnentUpdate(spHttpClient, absoluteUrl, listGuId, itemId, principalId, roleDefId){ 59 SetDeleteRoleAssignements(spHttpClient, absoluteUrl, listGuId, itemId, principalId) 60 .then(result =>{ 61 SetDeleteRoleAssignements(spHttpClient, absoluteUrl, listGuId, itemId, principalId, roleDefId) 62 .then(result =>{ 63 }) 64 }) 65 }

試したこと

権限を消す処理を行わずに権限の変更を試してみましたが、権限が重複してしまいました

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問