//サーバーから取得したACL(各権限)データをNCMBACLに保持する internal static NCMBACL _createACLFromJSONObject(Dictionary <string, object> aclValue) { //例:aclValue = {"hPRdWgQILfsyZ6zE":{"write":true,"read":true},"*":{"read":true}} //falseは無くtrueのみサーバーから返却される仕様 NCMBACL acl = new NCMBACL(); if (aclValue != null) { //aclValueのvalueを保持する //例:{"write":true,"read":true}や{"read":true}を保持する。tureのみ。 Dictionary <string, object> trueDic; //各権限(User,Role,public=*)をpermissionsByIdに設定する //例:objPair key:hPRdWgQILfsyZ6zE value:{"write":true,"read":true} など foreach (KeyValuePair <string, object> objPair in aclValue) { trueDic = (Dictionary <string, object>)objPair.Value; //例:permissionsPair key:write value:true など foreach (KeyValuePair <string, object> permissionsPair in trueDic) { //サーバーからはtureのものしか返却されないので第三引数はtrueで固定 acl._setAccess(permissionsPair.Key, objPair.Key, true); } } } return(acl); }
//現在のACL設定を複製 internal NCMBACL _copy() { NCMBACL copy = new NCMBACL(); try { copy.permissionsById = new Dictionary <string, object> (this.permissionsById); } catch (NCMBException e) { throw new NCMBException(e); } return(copy); }
/// <summary> /// デフォルトACLの設定を行います。 /// </summary> /// <param name="acl">ACL</param> /// <param name="withAccessForCurrentUser">true:オブジェクト作成者に対するフルアクセスをデフォルトで許可する</param> public static void SetDefaultACL(NCMBACL acl, bool withAccessForCurrentUser) { defaultACLWithCurrentUser = null; if (acl != null) { defaultACL = acl._copy(); defaultACL._setShared(true); defaultACLUsesCurrentUser = withAccessForCurrentUser; } else { defaultACL = null; } }
//オブジェクト生成時にデフォルトACLを付与 internal static NCMBACL _getDefaultACL() { //ログイン中ユーザの権限付与をする場合 if ((defaultACLUsesCurrentUser) && (defaultACL != null)) { //ログイン中ユーザが存在しないか、ストア登録されていない場合 if (NCMBUser.CurrentUser == null || NCMBUser.CurrentUser.ObjectId == null) { return(defaultACL); } //ログイン中ユーザが存在し、ストア登録されている場合 defaultACLWithCurrentUser = defaultACL._copy(); defaultACLWithCurrentUser._setShared(true); defaultACLWithCurrentUser.SetReadAccess(NCMBUser.CurrentUser.ObjectId, true); defaultACLWithCurrentUser.SetWriteAccess(NCMBUser.CurrentUser.ObjectId, true); return(defaultACLWithCurrentUser); } return(defaultACL); }
/// <summary> /// コンストラクター。<br/> /// ACLを指定してロールの作成を行います。 /// </summary> /// <param name="roleName">ロール名</param> /// <param name="acl">ACL</param> public NCMBRole(string roleName, NCMBACL acl) { Name = roleName; ACL = acl; }
//現在のACL設定を複製 internal NCMBACL _copy() { NCMBACL copy = new NCMBACL (); try { copy.permissionsById = new Dictionary<string, object> (this.permissionsById); } catch (NCMBException e) { throw new NCMBException (e); } //unresolvedユーザ処理必要ならここに書く return copy; }
//オブジェクト生成時にデフォルトACLを付与 internal static NCMBACL _getDefaultACL() { //ログイン中ユーザの権限付与をする場合 if ((defaultACLUsesCurrentUser) && (defaultACL != null)) { //ログイン中ユーザが存在しないか、ストア登録されていない場合 if (NCMBUser.CurrentUser == null || NCMBUser.CurrentUser.ObjectId == null) { return defaultACL; } //ログイン中ユーザが存在し、ストア登録されている場合 defaultACLWithCurrentUser = defaultACL._copy (); defaultACLWithCurrentUser._setShared (true); defaultACLWithCurrentUser.SetReadAccess (NCMBUser.CurrentUser.ObjectId, true); defaultACLWithCurrentUser.SetWriteAccess (NCMBUser.CurrentUser.ObjectId, true); return defaultACLWithCurrentUser; } return defaultACL; }
//サーバーから取得したACL(各権限)データをNCMBACLに保持する internal static NCMBACL _createACLFromJSONObject(Dictionary<string,object> aclValue) { //例:aclValue = {"hPRdWgQILfsyZ6zE":{"write":true,"read":true},"*":{"read":true}} //falseは無くtrueのみサーバーから返却される仕様 NCMBACL acl = new NCMBACL (); if (aclValue != null) { //aclValueのvalueを保持する //例:{"write":true,"read":true}や{"read":true}を保持する。tureのみ。 Dictionary<string,object> trueDic; //各権限(User,Role,public=*)をpermissionsByIdに設定する //例:objPair key:hPRdWgQILfsyZ6zE value:{"write":true,"read":true} など foreach (KeyValuePair<string, object> objPair in aclValue) { trueDic = (Dictionary<string,object>)objPair.Value; //例:permissionsPair key:write value:true など foreach (KeyValuePair<string, object> permissionsPair in trueDic) { //サーバーからはtureのものしか返却されないので第三引数はtrueで固定 acl._setAccess (permissionsPair.Key, objPair.Key, true); } } } return acl; }
/// <summary> /// デフォルトACLの設定を行います。 /// </summary> /// <param name="acl">ACL</param> /// <param name="withAccessForCurrentUser">true:オブジェクト作成者に対するフルアクセスをデフォルトで許可する</param> public static void SetDefaultACL(NCMBACL acl, bool withAccessForCurrentUser) { defaultACLWithCurrentUser = null; if (acl != null) { defaultACL = acl._copy (); defaultACL._setShared (true); defaultACLUsesCurrentUser = withAccessForCurrentUser; } else { defaultACL = null; } }
/// <summary> /// コンストラクター。<br/> /// ファイル名、ファイルデータ、ACLを指定してファイルの作成を行います。 /// </summary> public NCMBFile(string fileName, byte[] fileData, NCMBACL acl) : base() { this.FileName = fileName; this.FileData = fileData; this.ACL = acl; }