How to use K2 Menu with Role Permission

ในกรณีปกติแล้ว K2 Menu สามารถกำหนด Permission ในการเห็นแต่ละ Menu ได้ 3 ลักษณะคือ

  1. Everyone
  2. Active Directory Group
  3. Custom Security

Reference: https://www.dropbox.com/s/k5alk0if414lxxz/K2%20Menu%20System%20User%20Manual%20v1.0.1.pdf?dl=0

ซึ่งในบางกรณี เรามีความต้องการที่จะ Set K2 Menu Permission ตาม K2 Roles ที่เรามีการ Set อยู่แล้ว เราจะทำอย่างไรดี

Blog นี้จะเป็น Walk through Step ว่าเราจะเปลี่ยนจาก Custom Security มาเป็น K2 Roles ได้อย่างไร

Assumption

ควรจะมีความเข้าใจการทำงานของ Custom Security ของ K2 Menu ก่อน

K2Menu

หลักการสรุปของ K2 Menu Permission แบบ Custom Security ก็คือ เราสามารถ set ค่าว่าในแต่ละ menu จะต้องมี Custom Security อะไร ตอน Set menu

แล้วก็เราต้องเอาชื่อคนไป Resolve Table Permission อะไรซักอย่างเพื่อดูว่าคนๆนั้นมีค่า Permission ตรงกับ Menu มั้ย เช่น เรา set Menu A มีค่า custom security = 1,2 แล้วเราไป resolve ชื่อคนๆนั้น ว่ามี permission เป็น 1 เมื่อเอา 2 ค่านี้มาเปรียบเทียบกัน คนๆนี้ ก็จะสามารถเห็น Menu A ได้

เมื่อเราเข้าใจหลักการนี้ ก็ง่ายล่ะ เราก็แค่เปลี่ยนค่า 1,2 พวกนั้นเป็นชื่อ K2 Roles แทน แล้วตอน resolve ว่าคนๆนั้นมี permission อะไร ก็ไป resolve ว่าคนๆนั้น อยู่ Role อะไรแทน … เอ้าเริ่ม

  1. เปลี่ยนจากค่า Custom Security เป็นค่า Role โดยไปแก้ที่ K2MenuSystem.Level1MenuItems View โดยให้ไป get ค่า roles แทน ซึ่งอ้างอิง UMRole ได้เลย ฝั่ง setting ก็ทำแค่นี้

GetRoles

UMROLE2.

2. ฝั่ง resolve คนว่าอยู่ group ไหน ต้องอาศัย StoreProcedure นิดหน่อย ซึ่งมีเขียนใน K2Ranger ไว้แล้ว ตามนี้

CREATE PROCEDURE [dbo].[sp_FindRoleByUser] (

@pUserName NVARCHAR(447)

) AS

BEGIN

SELECT i.[Name]

FROM   [K2].[Identity].[Identity] i

INNER JOIN    [K2].[Identity].[RoleItem] r

ON     i.ID = r.IdentityID

WHERE  i.[Type] = 2

AND    r.[FQN] = @pUserName

END

เมื่อเราสร้าง Store Procedure นี้เสร็จ ก็ไปสร้าง SmartObject แล้วก็เอาคนไป Resolve เป็น Role ผ่าน Template View ที่ชื่อว่า K2MenuSystem.UserMemberShipCheck

membershipcheck

เท่านี้ก็ได้แล้ว คือหลังบ้าน set เป็น roles ส่วนหน้าบ้านก็เอาคนไป resolve กลับมาเป็น Roles

ถ้าใครเคยทำ Custom Security แบบปกติ… อ่าน blog นี้ก็น่าจะทำ Custom Security แบบ Roles ได้ไม่ยากเลยยยยย

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s