پوشه هایی با دسترسی محدود و گسترده را مدیریت کنید

یک کاربر مالک یک پوشه My Drive است. این پوشه ممکن است شامل چندین کاربر با دسترسی به فایل‌های مختلف باشد. این مدل دسترسی محدود به این معنی است که کاربران مختلف می‌توانند لیست‌های مختلفی از موارد را در همان پوشه مشاهده کنند. کاربری که به پوشه والد My Drive دسترسی دارد اما به یک مورد در آن پوشه دسترسی ندارد، "دسترسی محدود" دارد. این وضعیتی را ایجاد می‌کند که تشخیص اینکه چه کسی در سلسله مراتب دسترسی دارد، دشوار است.

برعکس، فایل‌های درایو اشتراکی متعلق به همان درایو هستند. درایوهای اشتراکی مدل گسترده‌ای دارند، بنابراین هر کاربر لیست یکسانی از موارد را در همان پوشه دارد.

معرفی پوشه‌هایی با دسترسی محدود، مدل دسترسی گسترده از درایوهای اشتراکی به My Drive را تکرار می‌کند. با این تغییر، پوشه‌هایی با دسترسی محدود، تنها استثنایی هستند که امکان محدود کردن دسترسی به یک زیرپوشه خاص را در My Drive و درایوهای اشتراکی فراهم می‌کنند.

این راهنما توضیح می‌دهد که چگونه می‌توانید پوشه‌هایی با دسترسی محدود و دسترسی گسترده را در گوگل درایو مدیریت کنید.

درباره پوشه‌هایی با دسترسی محدود

محدود کردن پوشه‌ها به کاربران خاص

پوشه‌هایی با دسترسی محدود به شما این امکان را می‌دهند که پوشه‌ها را به کاربران خاص محدود کنید. فقط کاربرانی که مستقیماً به مجوزهای پوشه اضافه می‌کنید می‌توانند آن را باز کرده و به محتوای آن دسترسی داشته باشند. کاربرانی که دسترسی ارثی به پوشه اشتراکی My Drive یا پوشه درایو مشترک (از طریق دسترسی از یک پوشه والد) دارند، می‌توانند پوشه محدود شده را در Drive ببینند اما نمی‌توانند آن را باز کنند. این ویژگی، رفتار اشتراک‌گذاری موارد را در My Drive و درایوهای مشترک بهتر هماهنگ می‌کند و به شما امکان می‌دهد پوشه‌هایی با محتوای حساس را در کنار محتوای اشتراکی گسترده‌تر سازماندهی کنید.

پوشه‌هایی با دسترسی محدود هم در My Drive و هم در درایوهای مشترک موجود هستند. نقش owner در My Drive و نقش organizer در درایوهای مشترک همیشه می‌توانند به پوشه‌هایی با دسترسی محدود دسترسی داشته باشند. برای تغییر لیست کاربران پوشه، هیچ مجوز خاصی لازم نیست. نقش‌هایی که می‌توانند پوشه‌ها را به اشتراک بگذارند، می‌توانند لیست اعضا را به‌روزرسانی کنند. برای کسب اطلاعات بیشتر در مورد نقش‌ها و مجوزها، به نقش‌ها و مجوزها و نمای کلی درایوهای مشترک مراجعه کنید.

توجه داشته باشید که اگرچه پوشه‌ها نوعی فایل هستند، اما دسترسی محدود برای فایل‌ها در دسترس نیست.

تنظیم دسترسی محدود روی یک پوشه

در حالی که کاربرانی که مجوزهای مستقیم پوشه دارند می‌توانند به پوشه‌ای با دسترسی محدود دسترسی داشته باشند، فقط نقش owner در My Drive و نقش organizer در درایوهای مشترک می‌توانند دسترسی محدود را فعال یا غیرفعال کنند.

علاوه بر این، اگر کاربری با نقش writer در My Drive، فیلد بولی writersCanShare را در منبع files روی true تنظیم کرده باشد، می‌تواند این ویژگی را فعال یا غیرفعال کند.

برای محدود کردن دسترسی به یک پوشه، فیلد boolean inheritedPermissionsDisabled را در منبع files روی true تنظیم کنید. وقتی true ، فقط نقش owner ، نقش organizer و کاربرانی که مجوزهای مستقیم پوشه را دارند می‌توانند به آن دسترسی داشته باشند.

برای فعال کردن مجدد مجوزهای ارثی، inheritedPermissionsDisabled را روی false تنظیم کنید.

تأیید مجوز برای محدود کردن دسترسی به یک پوشه

برای بررسی اینکه آیا می‌توانید دسترسی به یک پوشه را محدود کنید یا خیر، مقادیر بولی فیلدهای capabilities.canDisableInheritedPermissions و capabilities.canEnableInheritedPermissions را در منبع files بررسی کنید. این تنظیمات تأیید می‌کنند که آیا شما اجازه محدود کردن دسترسی به یک پوشه را از طریق فیلد inheritedPermissionsDisabled دارید یا خیر.

برای اطلاعات بیشتر در مورد capabilities ، به بخش «درک قابلیت‌های فایل» مراجعه کنید.

لیست کردن فرزندان یک پوشه با دسترسی محدود

برای بررسی اینکه آیا می‌توانید فرزندان یک پوشه را فهرست کنید، از فیلد بولی capabilities.canListChildren استفاده کنید.

مقدار برگشتی همیشه false است وقتی که مورد یک پوشه نباشد یا اگر دسترسی درخواست‌کننده به محتویات پوشه با تنظیم inheritedPermissionsDisabled به false حذف شده باشد.

اگر دسترسی شما به محتویات پوشه حذف شده باشد، همچنان می‌توانید با استفاده از متدهای files.get() و files.list() به متادیتای پوشه دسترسی داشته باشید. برای تأیید محدود بودن دسترسی، بدنه پاسخ را بررسی کنید تا ببینید آیا مورد، پوشه‌ای با نوع MIME application/vnd.google-apps.folder است یا خیر و فیلد capabilities.canListChildren روی false تنظیم شده است. اگر سعی کنید فرزندان چنین پوشه‌ای را فهرست کنید، نتیجه همیشه خالی است.

دسترسی به پوشه با فراداده دسترسی محدود

پوشه‌هایی با دسترسی محدود به شما امکان می‌دهند در صورت عدم دسترسی به محتوای پوشه، فراداده‌های پوشه را مشاهده کنید.

هنگام استفاده از منبع permissions برای تعیین دسترسی کاربر، هم پوشه‌های My Drive و هم پوشه‌های درایو مشترک که فقط دسترسی به فراداده‌ها را اعطا می‌کنند، حاوی مقادیر زیر در بدنه پاسخ هستند: inheritedPermissionsDisabled=true و view=metadata . نقش همیشه روی reader تنظیم می‌شود. فیلد view فقط برای مجوزهایی که متعلق به یک view هستند، پر می‌شود. برای اطلاعات بیشتر، به Views مراجعه کنید.

تمام ورودی‌های فیلد permissionDetails دارای فیلد inherited با true هستند که نشان می‌دهد مجوز به ارث رسیده است و دسترسی مستقیم به محتویات پوشه اعطا نشده است.

برای اعطای دسترسی به محتویات پوشه و فراداده‌ها، فیلد inheritedPermissionsDisabled را روی false تنظیم کنید یا نقش را به reader یا بالاتر به‌روزرسانی کنید.

در نهایت، اگر ابتدا یک مجوز با غیرفعال کردن ارث‌بری در یک پوشه ( inheritedPermissionsDisabled=true ) محدود شده باشد، و سپس مجوز مستقیماً به پوشه اضافه شود، مقادیر موجود در بدنه پاسخ به inheritedPermissionsDisabled=true تبدیل می‌شوند و فیلد view تنظیم نشده است. اگر پوشه در یک درایو مشترک باشد، لیست permissionDetails دارای ورودی است که فیلد inherited روی false تنظیم شده است تا نشان دهد که مجوز به ارث برده نشده است. این مجوز مانند هر مجوز دیگری، دسترسی به محتویات پوشه و فراداده را اعطا می‌کند.

حذف پوشه‌هایی با دسترسی محدود

شما می‌توانید پوشه‌هایی با دسترسی محدود را با استفاده از متد files.delete() روی منبع files حذف کنید.

در My Drive، فقط صاحب آیتم می‌تواند سلسله مراتب پوشه را حذف کند. اگر کاربری سلسله مراتبی را با پوشه‌هایی که دسترسی محدود دارند و متعلق به دیگران هستند حذف کند، این پوشه‌ها به My Drive مالک منتقل می‌شوند.

اگر کاربر نقش owner را داشته باشد، کل سلسله مراتب حذف می‌شود.

در درایوهای اشتراکی، نقش organizer می‌تواند سلسله مراتب را حتی اگر حاوی پوشه‌هایی با دسترسی محدود باشند، حذف کند. اگر نقش fileOrganizer سلسله مراتبی را که حاوی پوشه‌هایی با دسترسی محدود است حذف کند، نتیجه به این بستگی دارد که آیا آنها به عنوان fileOrganizer روی پوشه‌های با دسترسی محدود اضافه شده‌اند یا خیر. اگر اضافه شده باشند، کل سلسله مراتب حذف می‌شود. در غیر این صورت، پوشه‌های با دسترسی محدود به پوشه ریشه درایو اشتراکی منتقل می‌شوند.

درباره دسترسی گسترده

معرفی پوشه‌هایی با دسترسی محدود، مدل دسترسی گسترده را از درایوهای اشتراکی به درایو من (My Drive) گسترش می‌دهد. پس از راه‌اندازی مدل دسترسی، دسترسی به یک پوشه حداقل به معنای همان سطح دسترسی به همه چیز در سلسله مراتب آن پوشه است. پوشه‌های با دسترسی محدود، تنها استثنایی هستند که امکان محدود کردن دسترسی به یک زیرپوشه خاص را در درایو من (My Drive) و درایوهای اشتراکی فراهم می‌کنند. این همچنین بدان معناست که اگر پوشه شما دسترسی محدودی نداشته باشد، دیگر نمی‌توانید دسترسی‌ای را که از پوشه والد به ارث رسیده است، حذف کنید. انجام این کار به این معنی است که Drive API یک پاسخ خطا برمی‌گرداند. برای تعریف کنترل دسترسی جزئی‌تر در یک سلسله مراتب، می‌توانید دسترسی محدود به پوشه را تنظیم کنید .

با دسترسی گسترده سازگار شوید

برای اینکه توسعه‌دهندگان راحت‌تر بتوانند با دسترسی گسترده سازگار شوند، چندین بهبود در API گوگل درایو ایجاد شده است:

  1. فیلد permissionDetails[] در منبع permissions اکنون برای موارد موجود در My Drive پر می‌شود. پیش از این، فیلدها یا تنظیم نشده بودند یا در صورت لزوم از فیلد teamDrivePermissionDetails کپی می‌شدند. فقط permissionType و فیلدهای inherited در My Drive پر می‌شوند.

    فیلد permissionDetails[].inherited نشان می‌دهد که آیا مجوزی از والد آیتم به ارث رسیده است یا خیر. این فیلد به شما امکان می‌دهد تشخیص دهید که آیا نقش‌های خاصی (مانند reader ) از والد به ارث رسیده‌اند یا خیر، و آیا نقش بالاتری (مانند writer ) مستقیماً به آیتم اعطا شده است یا خیر.

    هنگام مشاهده مجوزهای یک آیتم، فیلد permissionDetails[] ممکن است شامل چندین ورودی باشد. در صورت وجود، یک ورودی برای مجوز مستقیم آیتم مربوط به آن محدوده و سپس ورودی‌هایی برای مجوزهای ارث‌بری شده یا عضو روی آیتم وجود دارد.

  2. توسعه‌دهندگان می‌توانند قبل از هرگونه الزام اجباری در آینده، رفتار API دسترسی گسترده را در My Drive انتخاب کنند. می‌توانید پارامتر درخواست enforceExpansiveAccess را روی true تنظیم کنید تا تغییرات آینده در دسترسی گسترده، برنامه شما را تحت تأثیر قرار ندهد.

    انتخاب اکنون به این معنی است که API برای موارد موجود در My Drive همانطور که قبلاً برای موارد موجود در درایوهای مشترک عمل می‌کرد، عمل می‌کند. برای مثال، هرگونه تلاشی برای محدود کردن دسترسی زیر نقش ارثی هنگام فراخوانی permissions.update() با شکست مواجه می‌شود. به طور مشابه، اگر مجوز به ارث برده شود، فراخوانی permissions.delete() با شکست مواجه می‌شود.

شناسایی و جلوگیری از دسترسی‌های محدود شده

ممکن است برنامه شما هنگام استفاده از متدهای permissions.update() یا permissions.delete() دسترسی محدودی (که در آن کاربر به پوشه والد My Drive دسترسی دارد اما به فایلی در آن پوشه دسترسی ندارد) در پوشه‌های My Drive شما ایجاد کند.

هنگام استفاده از این روش‌ها، می‌توانید فیلدهای منبع permissions را بررسی کنید تا ببینید یک درخواست در کجا ممکن است دسترسی محدود ایجاد کند و از ارسال چنین درخواست‌هایی خودداری کنید. برای تشخیص این وضعیت، از فیلد enforceExpansiveAccess در درخواست خود استفاده کنید.

علاوه بر این، اگر برنامه شما قبلاً دسترسی محدود به پوشه‌های شما ایجاد کرده است، می‌توانید مراحل زیر را انجام دهید:

  1. برای حذف دسترسی محدود، سلسله مراتب پوشه را طی کنید. به جای آن، باید دسترسی محدود به پوشه را تنظیم کنید .

  2. اگر موردی که می‌خواهید از اشتراک‌گذاری خارج کنید یک فایل است، می‌توانید یک پوشه میانی ایجاد کنید، دسترسی محدود به آن تنظیم کنید و فایل را به داخل پوشه جدید منتقل کنید.

  3. اگر نمی‌خواهید از پوشه‌های با دسترسی محدود استفاده کنید، اما باید برخی از دسترسی‌ها را حذف کنید، می‌توانید فایل را به یک پوشه خصوصی (مانند پوشه ریشه My Drive) منتقل کنید. سپس می‌توانید یک میانبر به مکان اصلی فایل ایجاد کنید تا کاربران همچنان بتوانند از آن استفاده کنند.