Odoo: Users & Rights
23 min
users เกิดแต่ใดมา? ก่อนอื่นต้องเข้าใจก่อนว่า user มีกันกี่ประเภท ในระบบเค้ามี 3 ประเภท แต่ละประเภททำงานต่างกัน แล้วมีอะไรบ้างล่ะ อย่างนี้เลย \<font color="#2166ae">internal user\</font> คือ user ที่สร้างขึ้นมาเพื่อใช้งานภายในระบบ ว่ากันตามสิทธิการใช้งานของแต่ละคนเลย แยกสิทธิ์ตามโมดูลกันไปเลย ที่สำคัญเมื่อสร้างแล้ว \<font color="#eb144c">เสียตังค์\</font> เลยนะเธอจ๋า อันนี้ต้องระวังว่าเราซื้อไว้เท่าไหร่ แต่มีทิคนิดหนึ่งเดี๋ยวค่อยเหลาให้ฟัง \<font color="#2166ae">portal\</font> คือ user ที่สร้างไว้สำหรับให้บุคคลภายนอกเข้ามาดูเอกสารได้บางอย่าง บางโมดูลเท่าที่ระบบกำหนดไว้ เห็นว่าสามารถโต้ตอบกับเว็บไซต์ของเรา ทำการซื้อ และดูเอกสารของตนเองที่เกี่ยวข้องกับการซื้อหรือการขายกับบริษัท (อันนี้ยังไม่ทดสอบใช้ดูน่ะ ฝากไว้ก่อนนิ ) แต่ที่รู้ ๆ ดูได้อย่างเดียวนะเธอ ที่สำคัญสร้างได้ไม่จำกัด และฟรีด้วย เราว่าเหมาะกับการประยุกต์ให้ลูกค้าภายนอก \<font color="#2166ae">public\</font> คือ อันนี้ไม่ชัดเจนเท่าไหร่ เอาเป็นว่าเราไม่ได้ใช้ล่ะกัน มองผ่านกันโล้ด !! ที่นี้ก็มาบรรเลงการสร้าง user แบบฉบับของ tyk กันเลย ลอกเค้าง่ายกว่า ปกติเราสามารถสร้าง user ขึ้นมาเองได้ แต่ด้วยความยุ่งยากในการกำหนดสิทธิสามัญชน มันผูกอิลุงตุงนังอะไรไว้บ้างก็ไม่รู้ เรากลัวพลาด ทำให้สิทธิ์ที่กำหนดจากทางเค้ากลั่นกรองตั้งต้นมาดีแล้ว เลยใช้วิธีลอกเค้า ง่าย และเร็วกว่าเยอะ ( หรืออยากทำเองก็เอาน่ะตะเอง) ม่ะเตรียมสมุดและปากกา เตรียมลอกกัน เริ่มที่โมดูล settings > gerneral settings > manage users ในหน้านี้เริ่มต้นระบบจะกรองข้อมูลเฉพาะ user ภายใน และ ที่ใช้งานอยู่ เราสามารถกรองดู ประเภท user หรือ user ที่ระงับการใช้งานไว้ ( inactive user ) และยังสามารถดูสถานะ user ได้ด้วยนะ ขอบอก คลิ๊กไปที่ user ที่เราต้องการจะก๊อปปี้ สิทธิ์การใช้งานตามท้องเรื่องที่เค้าเคยกำหนดมาให้แล้ว เมื่อเข้ามาแล้ว ให้กดปุ่ม action > duplicate ( สำเนา ) แล้วทำการ เปลี่ยนชื่อผู้ใช้ และอีเมล์ให้ถูกต้องแล้ว save ด้วยนะ แค่เนี่ยง่ายป่ะล่ะ แต่ยังไม่จบแค่นั้น อย่าลืมนะว่าการก๊อปปี้นี่มันเป็นการเพิ่ม user ขึ้นมา เท่ากับว่าคุณต้อง \<font color="#eb144c">เ\</font> \<font color="#eb144c">สียตังค์\</font> แล้วน่ะ ต้องดูว่าเราซื้อไว้ \<font color="#eb144c">70 user\</font> เกินอ่ะเปล่า อ้อเดี๋ยวนี้ การก๊อปปี้ user เค้าดันเขียนดักไว้ไม่ให้มี user ( email ) และ reference (รหัสพนง อ้างอิง) ที่อยู่ใน contract ซ้ำกันอีก มันจะ save บ่ได้เด้อ ต้อง \<font color="#eb144c">ลบ reference ออกก่อน\</font> แล้วค่อยก๊อปปี้น่ะ ก่อนลบ copy refence เดิม ไว้ก่อนนะ เพราะมันต้องกลับมาใส่คืนคนเก่าเค้านะ แล้วถ้ามันเกินล่ะ ก็ง่ายนิดเดียว เราก็ต้อง \<font color="#eb144c">archive \</font> ( ระงับ ) user ที่เค้าลาออกไปแล้วซิ ระงับ user เค้าไปเลย จำนวนก็เท่าเดิมล่ะ คืองี้ odoo เค้าระบุไว้ว่า เค้าจะนับจำนวนที่ใช้งานจริง ขอแค่ไม่เกินจำนวนที่ซื้อก็แค่นั้น / เพื่อความมั่นใจ เราสามารถ ทดสอบการ login user ที่เราสร้างขึ้นมาใหม่ ตรวจสอบความเรียบร้อยอีกรอบว่าสิทธิ์ที่เราเป็นกังวล มันจะหลุดไหม ก็ทำการ \<font color="#eb144c">change password \</font> user แล้วทดสอบโล้ด สิ่งที่ต้องตั้งสติต่อ การก็อปปี้ user จะเกิดการสร้างรายชื่อ contacts อัตโนมัติเลย เราจะต้องตามไปแก้ไข รหัสพนง ให้ถูกต้องด้วย โดยกดตรงรายชื่อหัวข้อ \<font color="#eb144c">related partner \</font> และ แก้ไขตรง \<font color="#eb144c">reference \</font> ที่สำคัญอย่าลืม save ด้วยนะ / กำหนดสิทธิ์โมดูลพื้นฐาน เมื่อเราจัดการเรื่อง users แล้ว ยังสามารถกำหนดสิทธิ์โมดูลแบบพื้นฐาน ง่าย ๆ ได้ แบบมาตรฐานของ odoo ที่มีอยู่แล้ว ในแท๊ป \<font color="#eb144c"> access rights\</font> โดยกำหนดให้ users นั้นสามารถใช้อะไรได้บ้าง ซึ่งถ้าสังเกตุ มันคือ กลุ่ม ที่จะอธิบายต่อหลังจากนี้ สิทธิ์การเข้าถึง การกำหนดสิทธิ์การเข้าถึง แสดง หรือ ซ่อน โมดูล / เมนูหลัก ย่อย / ปุ่มคำสั่ง / ฟิลด์ข้อมูล เพื่อความง่ายในการจัดการ จะต้อง \<font color="#eb144c">เปิดโหมดนักพัฒนา หรือ debug\</font> โดยตอนนี้ user ที่มีสิทธิ์ทำได้ จะมีแค่ \<font color="#eb144c">mis / dc / it\</font> ซึ่งเป็นสิทธิ์พิเศษ โดยมี 2 สิ่ง ที่เราจะวนเวียนยุ่งกับมันไปตลอด คือ \<font color="#2166ae">groups\</font> คือ กลุ่มสิทธิ์ ที่มี user อยู่ในกลุ่มนั้น ๆ ขึ้นอยู่กับเอาไปผูกกับอะไรไว้บ้าง ซึ่งมีทั้งเป็นมาตรฐานของ odoo และ สร้างเฉพาะขึ้นมาใหม่เอง \<font color="#2166ae">access rights\</font> คือ สิทธิ์ลงรายละเอียดกำหนดว่าให้ ดู / แก้ไข / สร้าง / ลบ อันนี้ถือเป็นมาตรฐานของ odoo ทาง c+ เค้าแนะนำว่าถ้าไม่เข้าใจอย่าไปแตะมันดีกว่า เพราะพลาดมา ยาว \<font color="#2166ae">restrict user\</font> คือ user ที่กำหนดไม่ให้เข้าถึง หรือ เห็นในเมนู จะรักใครไม่ชอบใครก็ตรงนี้ล่ะ groups พี่ใหญ่ คุมทุกซอย เริ่มจากภาพใหญ่ของ odoo ต้องเริ่มคุมจาก groups ก่อน โดย odoo เค้ามีกลุ่มมาตรฐานมาให้อยู่แล้ว เราก็ล้อตามเค้าไปเลย ยกเว้นมีอะไรที่พิเศษ คงต้องสร้างขึ้นมาใหม่กันเอง งั้นเรามาเริ่มต้นจากพี่ใหญ่สุดกันเลย เปิดโหมดนักพัฒนา ( developer mode ) หรือ debug น้องเต่าทอง นั่นล่ะ ก็ไปที่ settings > general settings > เลื่อนลงมาสุดหน้า จะเจอ developer tools กดตรง \<font color="#eb144c">เปิดใช้งานโหมดนักพัฒนาซอฟต์แวร์ ( activate the developer mode )\</font> / หรือใครอยากเป็นเซลส์นักพัฒนา หรือ เซลส์เทพที่ชอบใช้กันจัง ก็ง่าย ๆ แค่พิมพ์เลข 1 ไปหลัง \<font color="#eb144c">web?debug=# \</font> แล้วกด enter ในหน้าไหนก็ได้ของ odoo ในช่อง address ของโปรแกรมท่องอินเตอร์เน็ตที่เราใช้กัน ก็จะเข้าสู่โหมดน้องเต่าทองล่ะ สังเกตุตรงหัวด้านบนจะมีน้องเต่าทองบินมาปรากฏให้เห็นล่ะ / ถ้าเราอยู่หน้า settings อยู่แล้วก็ง่ายเลย ไปกันต่อ \<font color="#eb144c">settings \> เมนู users \& companies \> groups \</font> หน้านี้จะรวมสิทธิ์ของกลุ่ม ที่ผูก users ไว้กับหน้าต่าง ๆ เราสามารถพิมพ์ชื่อค้นหาโมดูลที่เราสนใจได้ เช่น sales , account เป็นต้น เราก็จะโฟกัสกันง่ายขึ้น แล้วเราจะดูยังไงล่ะ ว่ามันผูกสัมพันธ์กับใครไว้บ้าง เมื่อเราลองกดเข้าไปดูซักกลุ่มหนึ่ง มันมีสิ่งที่บอกเราไว้ที่มีสาระสำคัญดังนี้ \<font color="#2166ae">users\</font> = กลุ่มนี้มี users ไหนบ้างที่มีผลกระทบกับเค้า \<font color="#2166ae">menus\</font> = กลุ่มนี้มีผลกระทบกับเมนูไหนบ้าง และภายในยังกำหนด restrict users ที่ไม่ให้เห็นได้อีก \<font color="#2166ae">access rights\</font> = กลุ่มนี้มีสิทธิ์การใช้งานอย่างไร ในแต่ละโมเดล ( model ) หรือ ในแต่ละหน้า ในเมนูนั้น ๆ เช่น ดูอย่างเดียว (read) / แก้ไขได้ (write ) / สร้างใหม่ ( create ) / ลบได้ ( delete ) ซึ่งอันนี้จะละเอียดมาก \<font color="#eb144c">ถ้าไม่จำเป็นอย่าไปยุ่งเชียว \</font> ยกเว้นเราชำนาญมาก ๆ แล้ว / access rights พี่กลาง คุมให้ทำอะไร access rights แล้วเราจะดูยังไงว่า มันมีผลกระทบกับหน้าไหนบ้างล่ะ เอ้อเนอะ ดูก็ยัง งง ๆ กับความหมายในช่อง name กับ model กันนิดหนึ่ง ก็ขออธิบายอย่างที่เข้าใจนะว่า เหมือนเค้าเรียงลำดับความสำคัญจากบนลงล่างมา ว่ากันตามเมนู แล้วไล่ลงมาถึงหน้านั้น ๆ โดยจุดสังเหตุคือ \<font color="#eb144c">ชื่อโมดูลหลัก โมดูลย่อย\</font> ยกตัวอย่างให้เห็นภาพ \<font color="#eb144c">account account readonly \> account journal \> account move readonly\</font> account account คือ หน้าโมดูลหลัก account account journal คือ หน้าโมดูลหลัก account > หน้าโมดูลย่อย journal account move คือ หน้าโมดูลหลัก account > หน้าโมดูลย่อย journal > หน้าโมดูลย่อย journal entry โดยจุดสังเหตุหน้า journal entry ให้ดูที่ url ช่อง address ของโปรแกรมท่องอินเตอร์เน็ต มันจะระบุหน้าเหมือนกัน \<font color="#eb144c">account move\</font> โป๊ะเช๊ะ !! นั่นล่ะคือความหมาย มันจะมีผลกระทบในหน้านั้นเลย restrict users น้องเล็ก คุมไม่ให้เห็น restrict users เมื่อเปิดสิทธิ์ให้ใช้ได้ในภาพใหญ่แล้ว เค้าจะกรองออกในภาพย่อยว่า ไม่ให้เห็นเมนูนี้ /ปุ่มนี้ / ฟิลด์นี้ ชนิดที่ว่าไม่ชอบใครก็อย่าได้เข้ามาเชียว ซึ่งจะทำงานควบคู่กับโมดูล studio ที่เอาไว้สำหรับจัดการแสดงผลของแต่ละหน้าด้วย ซึ่งการที่ใช้ได้จะต้องมีสิทธิ์สูง แต่ไม่สุดของระบบ เอาล่ะกำหนดยังไงมาดูกัน / คลิ๊กไอคอน ตรงไขควง&ประแจ เพื่อเข้าโมดูล studio ซึ่งจะอยู่ทุกหน้า ก็สามารถปรับเปลี่ยนหน้าตากันได้เลย โดยขอเริ่มที่การจำกัดการเห็น ของเมนูต่าง ๆ โดยการกดปุ่ม \<font color="#eb144c">edit menu\</font> ให้เลือกเมนูที่สนใจว่าจะจำกัดเมนูไหน โดยต้องพิจารณาจำกัดสิทธิ์เรียงลำดับเมนูหลักก่อน แล้วมาเมนูย่อย ขึ้นอยู่ว่าจะจำกัดตั้งแต่เมนูไหน เช่น accounting คือเมนูหลัก ถ้าไม่ต้องการให้เห็นตั้งแต่เมนูหลัก เมนูย่อยก็ไม่ต้องไปกำหนดให้เมื่อยตุ้ม เมนูย่อยก็ไม่เห็นอยู่แล้ว แต่ถ้าต้องการให้ไม่เห็นเฉพาะเมนูย่อยใต้ accounting บางเมนูค่อยมากำหนด ไม่ให้เห็นแต่ละเมนูย่อยอีกที โดยคลิ๊กตรงไอคอน \<font color="#eb144c">สมุด\&ดินสอ\</font> / คลิ๊ก restrict users แล้วกำหนด user ด้วย \<font color="#eb144c">add a line\</font> ได้ตามใจชอบ ไม่ชอบใครก็จำกัดให้สิ้น / นอกจากนั้น เรายังสามารถจำกัดการแสดงผลของฟิลด์ได้อีกด้วย โดยทำการคลิ๊กเลือกฟิลด์ที่เราต้องการ ในหน้า studio แล้วกำหนดกลุ่มที่จำกัดได้ ในใต้ช่อง \<font color="#eb144c">limit visibility to groups\</font> ในแท็ป properties เลือกได้มาก 1 กลุ่ม / นอกจากนี้เรายังกำหนดสิทธิ์ที่ปุ่มกด ในส่วนหัวได้อีกด้วย หลักการเดิมเลย ทำที่หน้า studio คลิ๊กท่ี่ปุ่มสนใจ ที่ช่อง \<font color="#eb144c">limit visibility to groups\</font> ในแท็ป properties เลือกได้มาก 1 กลุ่ม เช่นเคย / แค่นี้ก็สามารถบริหารจัดการเรื่อง users และ สิทธิ์การใช้งานได้แล้วกระมัง ที่เหลือก็ไปลองทดสอบวิชาได้ใน staging ( ฐานข้อมูลจำลอง ) ก่อนได้ ก่อนทำจริง เพื่อความมั่นใจ tip & trick กำหนดสิทธิ์ให้ export ได้ การกำหนดสิทธิ์ให้ export ได้นั้น จะถูกสร้างขึ้นใน กลุ่ม technical เฉพาะเจาะจงสำหรับเรื่องนี้โดยเฉพาะ ซึ่งต้องกำหนด users ที่ต้องการลงไปก่อน ถึงจะทำได้ คือ กลุ่ม \<font color="#eb144c">technical / access to export feature \</font> เมื่อกำหนดแล้วจะ export ได้ทุกหน้าที่สามารถทำได้ในปุ่ม actions > export \<font color="#eb144c">ไม่\</font> \<font color="#eb144c">สามารถควบคุมเฉพาะบางหน้าได้\</font> / คีย์ลัดค้นคว้า คว้าดาว เพื่อดูเป็นมืออาชีพเห็นเค้าทำกัน เลยเอาเทคนิคนี้มาฝาก pop up คีย์ลัดไว้ค้นหา และกระโดดไปหน้าโน้นหน้านี้ได้เร็วขึ้น เพียงแค่กดปุ่มบนคีย์บอร์ด \<font color="#eb144c">ctrl+k แล้วตามด้วย / \</font> อยากคว้าอะไรก็คว้าหาเอาเองน่ะ โดยเฉพาะถ้าต้องการเข้า debug โหมด ( น้องเต่าทอง ) ก็พิมพ์คำว่า debug กด enter รอซักพัก ก็เข้าได้ล่ะ / กำหนดไม่ให้ใช้งานโมดูลใหญ่ มันเป็นเรื่องละเอียดอ่อน มีสิ่งที่ซ่อนอยู่ที่ต้องตามเข้าไปดูเพิ่มเติมในการกำหนดสิทธิ์ คือ ถ้าไม่ต้องการให้เข้า หรือให้เข้าโมดูลใหญ่ ก็ \<font color="#eb144c">ต้องกำหนดใน user เข้าไปใน restrict user หรือ เอาออก มันจะมองไม่เห็น หรือ เห็นทั้งโมดูลเลย\</font> ทะลายกำแพงสิทธิ์ก่อนหน้าไปเลย แม้แต่กำหนดใน group และ access right ไปแล้วก็ตาม เช่น user admin hrs\@tykglass com ต้องใช้งานโมดูล recruit ( รับสมัครงาน ) ต้องเอา user เค้าออกจาก restict user โดยก่อนหน้ามีกำหนดเค้าไว้ไม่ให้เห็น โดยวิธีการทำดังนี้เลย เข้าหน้า module หลักก่อน เช่น recruitment ( รับสมัครงาน ) คลิ๊กเข้าสู่ studio ( รูปคีมกับไขควง ) กด edit menu กดปุ่มดินสอ โมดูลสูงสุด เช่น recruitment ( รับสมัครงาน ) restrict users กด x เพื่อเอา user ออก ก็เข้าได้ล่ะ ในทางกลับกันถ้าเอาใส่เข้า ก็เลื่อนลงมาด้านล่าง add line เลือก user ที่ไม่ต้องการให้ใช้ ก็จะใช้งานไม่ได้ล่ะ จบด้วยประการทั้งปวง