Alfresco รองรับการกำหนดสิทธิ์ให้กับผู้ใช้ในระบบได้ ผู้ดูแลระบบสามารถกำหนดสิทธิ์ให้ผู้ใช้ในระบบเพื่อควบคุมและจัดการสิทธิ์ในการเข้าถึงข้อมูลหรือการประทำใดๆ ในระบบได้ สิทธิ์ของผู้ใช้บน Alfresco ที่มีอยู่แต่เดิมนั้น มีเพียงแค่

  • consumer : อ่านได้ ดาวน์โหลดได้ แต่แก้ไข, เพิ่ม หรือลบข้อมูลไม่ได้
  • editor : อ่าน และแก้ไขได้ ดาวน์โหลดได้ แต่เพิ่ม หรือลบข้อมูลไม่ได้
  • contributor : อ่าน และเพิ่มข้อมูลได้ ดาวน์โหลดได้ แต่แก้ไข หรือลบข้อมูลไม่ได้
  • collaborator : อ่าน เพิ่ม และแก้ไขข้อมูลได้ ดาวน์โหลดได้ แต่ลบข้อมูลไม่ได้
  • coordinator : มีสิทธิ์เทียบเท่ากับ owner
  • owner : เป็นสิทธิ์ที่ให้กับผู้ที่เป็นคน create file ดังกล่าวบน Alfresco ซึ่งมีสิทธิ์ในการกระทำกับไฟล์ดังกล่าวได้ทุกอย่าง

จากสิทธิ์ที่ผมได้อธิบายด้านบน จะเห็นว่าไม่มีสิทธิ์ใดเลยที่จะระบุ เพื่อห้ามไม่ให้ผู้ใช้ดาวน์โหลดไฟล์เอกสารจาก Alfresco แต่สิทธิ์ในการห้ามดาวน์โหลดกลับเป็นสิทธิ์ที่จำเป็นต้องมี

ครั้งนี้จะมาแนะนำวิธีการ สร้างสิทธิ์ในการควบคุมไม่ให้ดาวน์โหลดเอกสารขึ้นมาบน Alfresco ซึ่งวิธีการจะประกอบไปด้วย 2 ส่วนด้วยกันนะครับ คือ

  • สร้าง Role เพื่อที่จะกำหนดให้ ไม่มีสิทธิ์ในการ Download เอกสาร
  • เพิ่ม Permission เข้าไปใน Action ในส่วนของการ Download เอกสาร

เริ้มต้นโดยการเข้าไปที่ path นี้บน Alfresco /tomcat/webapps/share/WEB-INF/classes/alfresco/share-documentlibrary-config.xml ไฟล์นี้จะเป็นไฟล์สำหรับเก็บ Config ต่างๆ ของ Alfresco Share โดยให้ Search คำว่า DocLibActions แล้วเพิ่ม Code ในส่วนของการกำหนด Permission ดังนี้

จากนั้นก็สร้าง Code เพื่อกำหนด Permission ในส่วนของ Download Document และ View In Browser ต่อเลยนะครับ

จากนั้นให้ทำการสร้าง Role เพิ่ม โดยเราจะเข้าไปแก้ไขไฟล์ที่ tomcat\webapps\alfresco\WEB- INF\classes\alfresco\model\permissionDefinitions.xml ซึ่งเป็นไฟล์ที่กำหนด PermissionGroup และ Roles ต่างๆ โดยให้ทำการเพิ่ม PermissionGroup ใหม่ชื่อ DownloadPermission ครับ

<permissionGroup name="FullControl" expose="true" allowFullControl="true" />
<permissionGroup name="DownloadPermission" expose="true" allowFullControl="false" />

โดยให้ทำการเพิ่ม Permission Name ตาม Code ด้านล่างนะครับ

<permission name="_DownloadPermission" expose="false">
<grantedToGroup permissionGroup="DownloadPermission" />
</permission>

จากนั้นก็ให้เพิ่ม PermissionGroup ชื่อว่า CanDownload ตาม Code ด้านล่างนะครับ

<permissionGroup name="CanDownload" allowFullControl="false" expose="true">
<includePermissionGroup type="sys:base" permissionGroup="ReadProperties"/>
<includePermissionGroup type="sys:base" permissionGroup="ReadChildren"/>
<includePermissionGroup type="sys:base" permissionGroup="ReadContent"/>
<includePermissionGroup type="sys:base" permissionGroup="WriteProperties"/>
<includePermissionGroup type="sys:base" permissionGroup="WriteContent"/>
<includePermissionGroup type="sys:base" permissionGroup="CreateChildren"/>
<includePermissionGroup type="sys:base" permissionGroup="LinkChildren"/>
<includePermissionGroup permissionGroup="DownloadPermission" type="sys:base" />
</permissionGroup>

เพิ่ม CanDownload เข้าไปในส่วนของ cm:content และ cm:folder ดังรูป

แล้วเข้าไปแก้ไข File “script-services-context.xml” ที่ \tomcat\webapps\alfresco\WEB-INF\classes\alfresco\ โดยในส่วนของ userPermissions ให้เพิ่ม Permission DownloadPermission เข้าไป

<property name="userPermissions">
<list>
<value>CancelCheckOut</value>
<value>ChangePermissions</value>
<value>CreateChildren</value>
<value>Delete</value>
<value>Write</value>
<value>DownloadPermission</value>
</list>
</property>

เมื่อเสร็จเรียบร้อยแล้ว ให้ไปที่ \tomcat\shared\classes\alfresco\web-extension\custom-slingshot-application-context.xml เปิดไฟล์ขึ้นมา แล้วทำการเพิ่ม Code ดังต่อไปนี้

สิ่งที่เพิ่มขึ้นมาเป็นการบอกว่าไฟล์ Label ที่เราจะใส่ค่านั้น จะเก็บไว้ที่ไฟล์อะไร ซึ่งในที่นี้เราจะเก็บไว้ที่ messageShareModel.properties เสร็จแล้วให้สร้างไฟล์ messageShareModel.properties ไว้ที่ \tomcat\shared\classes\alfresco\web-extension\messages\ จากนั้นเพิ่ม Code ต่อไปนี้

ทำการซ่อนปุ่ม Download ที่อยู่ตรงเมนูด้านบนนะครับ โดยเข้าไปที่ \Alfresco\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\node-details\ node-header.get.html.ftl

เพิ่ม Code เข้าไปนะครับ <assign showDownload = “false”> จากนั้น มาทดสอบกันโดยสั่ง Restart Alfresco จากนั้นให้ Login เข้า Alfresco โดยใช้ User Administrator และทดสอบโดยการสร้าง Folder ขึ้นมา จากนั้นคลิกที่ Manage Permissions

จากนั้นให้ทำการเพิ่ม User หรือ Group ขึ้นมานะครับ โดยคลิกที่ Role จะปรากฏ Role ใหม่ขึ้นมา ชื่อ CanDownload (ตอนนี้ User ทุกคนจะไม่สามารถ Download เอกสารได้นะครับ ยกเว้น Administrator และ User ที่มีสิทธิ์เป็น CanDownload)

ให้ทดสอบโดยการเลือก CanDownload จะสังเกตว่า User อื่นๆ จะไม่สามารถ Download Content ได้ ยกเว้นแต่ User หรือ Group ที่มี Roles เป็น CanDownload และ Administrator เท่านั้น

Comments are closed.