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