[{"data":1,"prerenderedAt":481},["ShallowReactive",2],{"navigation":3,"page-\u002Fdesign\u002Fdata-separation-management":213,"\u002Fdesign\u002Fdata-separation-management-surround":477},[4,102,162,183],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","\u002Fgetting-started","1.getting-started",[9,11,15,19,23,27,31,57,86],{"title":5,"path":6,"stem":10},"1.getting-started\u002F1.index",{"title":12,"path":13,"stem":14},"Features","\u002Fgetting-started\u002Ffeatures","1.getting-started\u002F1.features",{"title":16,"path":17,"stem":18},"Demo","\u002Fgetting-started\u002Fdemo","1.getting-started\u002F2.demo",{"title":20,"path":21,"stem":22},"Requirements","\u002Fgetting-started\u002Frequirements","1.getting-started\u002F2.requirements",{"title":24,"path":25,"stem":26},"Components","\u002Fgetting-started\u002Fcomponents","1.getting-started\u002F3.components",{"title":28,"path":29,"stem":30},"Versioning","\u002Fgetting-started\u002Fversioning","1.getting-started\u002F3.versioning",{"title":32,"path":33,"stem":34,"children":35,"page":56},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F4.installation",[36,40,44,48,52],{"title":37,"path":38,"stem":39},"Installation Methods","\u002Fgetting-started\u002Finstallation\u002Fmethods","1.getting-started\u002F4.installation\u002F1.methods",{"title":41,"path":42,"stem":43},"Cloud","\u002Fgetting-started\u002Finstallation\u002Fcloud","1.getting-started\u002F4.installation\u002F2.cloud",{"title":45,"path":46,"stem":47},"Using Docker","\u002Fgetting-started\u002Finstallation\u002Fcontainer-docker","1.getting-started\u002F4.installation\u002F3.container-docker",{"title":49,"path":50,"stem":51},"Kubernetes: Using Helm","\u002Fgetting-started\u002Finstallation\u002Fkubernetes-helm","1.getting-started\u002F4.installation\u002F4.kubernetes-helm",{"title":53,"path":54,"stem":55},"Post-Installation Steps","\u002Fgetting-started\u002Finstallation\u002Fpost-install-steps","1.getting-started\u002F4.installation\u002F6.post-install-steps",false,{"title":58,"path":59,"stem":60,"children":61,"page":56},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F5.configuration",[62,66,70,74,78,82],{"title":63,"path":64,"stem":65},"Config File Reference","\u002Fgetting-started\u002Fconfiguration\u002Fconfig-reference","1.getting-started\u002F5.configuration\u002F1.config-reference",{"title":67,"path":68,"stem":69},"DBSync","\u002Fgetting-started\u002Fconfiguration\u002Fdbsync","1.getting-started\u002F5.configuration\u002F3.dbsync",{"title":71,"path":72,"stem":73},"Command Flags","\u002Fgetting-started\u002Fconfiguration\u002Fflags","1.getting-started\u002F5.configuration\u002F5.flags",{"title":75,"path":76,"stem":77},"Database Basics","\u002Fgetting-started\u002Fconfiguration\u002Fdatabase-basics","1.getting-started\u002F5.configuration\u002F6.database-basics",{"title":79,"path":80,"stem":81},"Advanced Configuration","\u002Fgetting-started\u002Fconfiguration\u002Fadvanced","1.getting-started\u002F5.configuration\u002F7.advanced",{"title":83,"path":84,"stem":85},"Common Installation Issues","\u002Fgetting-started\u002Fconfiguration\u002Fcommon-installation-issues","1.getting-started\u002F5.configuration\u002Fcommon-installation-issues",{"title":87,"path":88,"stem":89,"children":90,"page":56},"Gameserver","\u002Fgetting-started\u002Fgameserver","1.getting-started\u002F6.gameserver",[91],{"title":92,"path":93,"stem":94,"children":95,"page":56},"FiveM Plugin","\u002Fgetting-started\u002Fgameserver\u002Ffivem-plugin","1.getting-started\u002F6.gameserver\u002F1.fivem-plugin",[96,99],{"title":32,"path":97,"stem":98},"\u002Fgetting-started\u002Fgameserver\u002Ffivem-plugin\u002Finstallation","1.getting-started\u002F6.gameserver\u002F1.fivem-plugin\u002F1.installation",{"title":58,"path":100,"stem":101},"\u002Fgetting-started\u002Fgameserver\u002Ffivem-plugin\u002Fconfiguration","1.getting-started\u002F6.gameserver\u002F1.fivem-plugin\u002F2.configuration",{"title":103,"path":104,"stem":105,"children":106},"User Guides","\u002Fuser-guides","3.user-guides\u002F0.index",[107,108,112,116,120,130,134,138,142,146,150,154,158],{"title":103,"path":104,"stem":105},{"title":109,"path":110,"stem":111},"System Requirements","\u002Fuser-guides\u002Fsystem-requirements","3.user-guides\u002F0.system-requirements",{"title":113,"path":114,"stem":115},"Citizens","\u002Fuser-guides\u002Fcitizens","3.user-guides\u002F1.citizens",{"title":117,"path":118,"stem":119},"Vehicles","\u002Fuser-guides\u002Fvehicles","3.user-guides\u002F2.vehicles",{"title":121,"path":122,"stem":123,"children":124},"Documents","\u002Fuser-guides\u002Fdocuments","3.user-guides\u002F3.documents\u002Findex",[125,126],{"title":121,"path":122,"stem":123},{"title":127,"path":128,"stem":129},"Templates","\u002Fuser-guides\u002Fdocuments\u002Ftemplates","3.user-guides\u002F3.documents\u002Ftemplates",{"title":131,"path":132,"stem":133},"Jobs","\u002Fuser-guides\u002Fjobs","3.user-guides\u002F3.jobs",{"title":135,"path":136,"stem":137},"Calendar","\u002Fuser-guides\u002Fcalendar","3.user-guides\u002F4.calendar",{"title":139,"path":140,"stem":141},"Livemap","\u002Fuser-guides\u002Flivemap","3.user-guides\u002F5.livemap",{"title":143,"path":144,"stem":145},"Dispatch Center","\u002Fuser-guides\u002Fcentrum","3.user-guides\u002F6.centrum",{"title":147,"path":148,"stem":149},"Mailer","\u002Fuser-guides\u002Fmailer","3.user-guides\u002F6.mailer",{"title":151,"path":152,"stem":153},"Settings","\u002Fuser-guides\u002Fsettings","3.user-guides\u002F7.settings",{"title":155,"path":156,"stem":157},"Languages (i18n)","\u002Fuser-guides\u002Fi18n","3.user-guides\u002F8.i18n",{"title":159,"path":160,"stem":161},"iOS App","\u002Fuser-guides\u002Fios-app","3.user-guides\u002F9.ios-app",{"title":163,"path":164,"stem":165,"children":166},"Development","\u002Fdevelopment","8.development\u002F1.index",[167,168,172,176,180],{"title":163,"path":164,"stem":165},{"title":169,"path":170,"stem":171},"GRPC Protobuf Documentation","\u002Fdevelopment\u002Fgrpc-api","8.development\u002F3.grpc-api",{"title":173,"path":174,"stem":175},"Release Process","\u002Fdevelopment\u002Frelease","8.development\u002F4.release",{"title":177,"path":178,"stem":179},"User Activity","\u002Fdevelopment\u002Fuser-activity","8.development\u002F5.user-activity",{"title":155,"path":181,"stem":182},"\u002Fdevelopment\u002Fi18n","8.development\u002Fi18n",{"title":184,"path":185,"stem":186,"children":187},"Design Docs","\u002Fdesign","9.design\u002F1.index",[188,190,194,198,201,205,209],{"title":189,"path":185,"stem":186},"Designs",{"title":191,"path":192,"stem":193},"Improving Data Separation and Management for Users and Citizens","\u002Fdesign\u002Fdata-separation-management","9.design\u002Fdata-separation-management",{"title":195,"path":196,"stem":197},"DB Sync","\u002Fdesign\u002Fdb-sync","9.design\u002Fdb-sync",{"title":143,"path":199,"stem":200},"\u002Fdesign\u002Fdispatch-center","9.design\u002Fdispatch-center",{"title":202,"path":203,"stem":204},"Employee Management","\u002Fdesign\u002Femployee-management","9.design\u002Femployee-management",{"title":206,"path":207,"stem":208},"Player Tracker Rework","\u002Fdesign\u002Fplayer-tracker-rework","9.design\u002Fplayer-tracker-rework",{"title":210,"path":211,"stem":212},"Qualifications","\u002Fdesign\u002Fqualifications","9.design\u002Fqualifications",{"id":214,"title":191,"body":215,"description":470,"extension":471,"links":472,"meta":473,"navigation":474,"path":192,"redirect":472,"seo":475,"stem":193,"__hash__":476},"content_en\u002F9.design\u002Fdata-separation-management.md",{"type":216,"value":217,"toc":462},"minimark",[218,226,231,241,245,289,293,361,365],[219,220,221,225],"p",{},[222,223,224],"strong",{},"Status",": Implemented",[227,228,230],"h2",{"id":229},"glossary","Glossary",[232,233,234,238],"ul",{},[235,236,237],"li",{},"User - An user account that can log into FiveNet.",[235,239,240],{},"Citizen - A roleplay character that is optionally linked to an user account (e.g., might be \"unlinked\" if an user doesn't create a FiveNet account).",[227,242,244],{"id":243},"problems","Problems",[232,246,247,268,286],{},[235,248,249,250,253,254],{},"Some servers that might have expanded the ESX framework or are even using a different framework, might have different ways to assign one ",[222,251,252],{},"or more"," groups to an user. This is currently not really supported.\n",[232,255,256],{},[235,257,258,259,263,264,267],{},"In case of ESX an user can only have one group assigned via the ",[260,261,262],"code",{},"users"," table ",[260,265,266],{},"group"," column. This also binds the permissions to the char itself and not to the whole \"account.\"",[235,269,270,271],{},"This continues for some other (common) data, e.g., jobs, phone numbers.\n",[232,272,273,279],{},[235,274,275,276,278],{},"Some chars might have more than one job, e.g., ModernV, people can have what you can call a \"primary\" job and a \"secondary\" job (technically even more), that are simply set in the ",[260,277,262],{}," .",[235,280,281,282,285],{},"Multiple phone numbers are also not supported, as ESX only supports one phone number per char which the current ",[260,283,284],{},"fivenet_user"," table is based on. There seems to be some phone plugins that allow multiple phone numbers.",[235,287,288],{},"Sidenote: Being able to give an user superuser access or even allowing permissions to be given to users of a job and\u002For \"globally.\"",[227,290,292],{"id":291},"goals","Goals",[232,294,295,319,341],{},[235,296,297,298],{},"Citizens - Info\u002FData Changes\n",[232,299,300,303,311],{},[235,301,302],{},"Multiple Groups - Allowing multiple groups to be assigned to a citizen via DBSync from gameserver db and\u002For admin UI.",[235,304,305,306],{},"Multiple Jobs - Allow multiple jobs to be assigned to a citizen via DBSync from gameserver db and\u002For admin UI.\n",[232,307,308],{},[235,309,310],{},"A clear distinction between primary and secondary jobs is needed.",[235,312,313,314],{},"Multiple Phone Numbers - Allow multiple phone numbers to be assigned to a citizen.\n",[232,315,316],{},[235,317,318],{},"A clear distinction between primary and secondary phone numbers is needed.",[235,320,321,322],{},"Creating\u002FEditing\u002FDeleting Citizens\n",[232,323,324,335,338],{},[235,325,326,327],{},"Creating a citizen with incomplete or all information should be possible manually via the admin UI\n",[232,328,329,332],{},[235,330,331],{},"Could be made accessible via permissions in the future for, e.g., hardcore roleplay servers that have staff manually \"adding\" new users via an airport.",[235,333,334],{},"Ability to set citizen information based on permission levels.",[235,336,337],{},"Ability to edit \"citizens\" in the FiveNet database (preferably with a way to reset back to \"original\" (from gameserver) state).",[235,339,340],{},"Ability to delete \"citizens\" from the FiveNet database (without \"deleting\" them from the gameserver database).",[235,342,343,344,347,348,351,352],{},"Improve performance of account to citizens lookup by not having to use ",[260,345,346],{},"WHERE ","identifier",[260,349,350],{}," LIKE '%_IDENTIFIER_HERE_'"," queries.\n",[232,353,354],{},[235,355,356,357,360],{},"An ",[260,358,359],{},"user"," entry will be linked to the account ID directly instead of having to search for it via the identifier pattern matching.",[227,362,364],{"id":363},"solutions","Solutions",[232,366,367,451],{},[235,368,369,370,372,373],{},"Changing the ",[260,371,284],{}," table structure.\n",[232,374,375,386,408],{},[235,376,377,378,381,382,385],{},"Adding a ",[260,379,380],{},"deleted_at"," column to be able to soft-delete users, with a ",[260,383,384],{},"deleted_reason"," field.",[235,387,388,389,391,392,395,396,399,400,403,404,407],{},"The current \"singular\" columns (",[260,390,266],{},", ",[260,393,394],{},"job",", and ",[260,397,398],{},"phone_number",") will be kept as they are, a prefix of ",[260,401,402],{},"active_"," or ",[260,405,406],{},"primary_"," might be added to clarify their purpose.",[235,409,410,411,391,414,395,417,420,421,403,424,427,428],{},"Adding new (plural named) columns for ",[260,412,413],{},"groups",[260,415,416],{},"jobs",[260,418,419],{},"phone_numbers"," that are of type ",[260,422,423],{},"JSON",[260,425,426],{},"LONGTEXT"," (required for compatibility with MariaDB).\n",[232,429,430],{},[235,431,432,433,391,436,391,439,442,443],{},"Or even seperate tables for each of them, e.g., ",[260,434,435],{},"fivenet_user_groups",[260,437,438],{},"fivenet_user_jobs",[260,440,441],{},"fivenet_user_phone_numbers",".\n",[232,444,445],{},[235,446,447,448,450],{},"These tables would have a foreign key to the ",[260,449,284],{}," table and store multiple entries per user.",[235,452,453,454],{},"Updating the FiveNet admin UI to support the new functionalities.\n",[232,455,456,459],{},[235,457,458],{},"Adding interfaces for managing multiple groups, jobs, and phone numbers.",[235,460,461],{},"Adding interfaces for creating, editing, and deleting \"citizens.\"",{"title":463,"searchDepth":464,"depth":464,"links":465},"",2,[466,467,468,469],{"id":229,"depth":464,"text":230},{"id":243,"depth":464,"text":244},{"id":291,"depth":464,"text":292},{"id":363,"depth":464,"text":364},"Status: Implemented","md",null,{},true,{"title":191,"description":470},"nhZJqpsWewH4ho3pOPqKqjmLDTk1MmYhsPxHeo4WnnU",[478,480],{"title":189,"path":185,"stem":186,"description":479,"children":-1},"Welcome to the design section of the project. Here you will find design-related documentation.",{"title":195,"path":196,"stem":197,"description":470,"children":-1},1787957461495]