Розробка системи ролей і прав доступу мобільного додатка

Коли команда зростає, ручна видача доступів стає вузьким місцем: хтось отримує зайві права, а хтось чекає на них тижнями. Ми проєктуємо та впроваджуємо систему ролей і прав доступу в мобільному додатку під ключ — від розбору сценаріїв до передачі регламентів. Погодження доступу пришвидшується в рази, а спірні ситуації перестають залежати від конкретної людини.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка системи ролей і прав доступу мобільного додатка
Середній
~3-5 днів
Часті запитання

Мобільний застосунок: система ролей ламається під час зростання команди

Перші ролі в мобільному застосунку описуються парою умов: адміністратор бачить усе, решта — лише своє. Поки співробітників десятки, система ролей живе в одному місці й не заважає.

Коли команда зростає й додаються партнерські сценарії, перевірка прав розповзається: частина умов залишається на клієнті, частина — у серверних обробниках, частина дублюється в панелі адміністратора.

Далі з'являється ціна. Розросла логіка доступу перестає бути передбачуваною: екран, закритий в одному місці, виявляється відкритим в іншому, а роль, видана вручну, не відкликається під час переведення співробітника.

Будь-яка правка списку дозволів перетворюється на новий випуск застосунку, і поки він триває, ручна видача прав залишається єдиним способом закрити задачу.

Виручає одна точка ухвалення рішення. Ролі й дозволи живуть на боці сервера, застосунок отримує готовий набір разом із токеном і не зберігає копію в себе — так само влаштований доступ у Keycloak.

Перевірка прав усередині застосунку перетворюється на один виклик, а відкликання спрацьовує одразу, а не після оновлення.

Розбираємо, як це закривається: які ролі виділяти, де відбувається перевірка, як змінювати матрицю доступу без нового випуску і що відбувається з уже виданими дозволами.

Що дає керований доступ: вимірювані ефекти

Права перестають бути частиною екранів і стають окремим сервісом, який на кожен запит відповідає «можна / не можна» і чому. Рішення ухвалюється за матрицею ролей, а не за умовою, розмазаною по модулях інтерфейсу.

Ефекти нижче ми вимірюємо за журналом перевірок: скільки запитів пройшло штатно, скільки відхилено і скільки правил змінювали вручну.

Одна перевірка замість копій правил у кожному модулі

Усі звернення до даних проходять єдину точку перевірки прав, тому правило описане один раз. Частка ручних правок у зверненнях падає з третини до одиниць відсотків: типові сценарії закриває матриця ролей, а вручну налаштовують лише нові ролі, а не розбіжності між екранами.

Разом із копіями логіки зникає цілий клас відмов — коли роль на одному екрані трактується інакше, ніж на іншому, і запит проходить там, де проходити не повинен. Відтворити таку розбіжність більше нема чим: інтерфейс будується з відповіді сервісу прав.

Правка доступу без нового випуску застосунку

Зміна прав — це правка конфігурації, а не коду, тому не потрібні перезбирання й випуск у магазинах застосунків.

Роль видають або відкликають, клієнт бачить результат із першого ж запиту, а повернення до попередньої матриці відновлює попередню поведінку без очікування нової версії.

Швидкість випуску версій зростає рівно на обсяг задач із доступу, які більше не стоять у черзі релізу й не тягнуть за собою повторну перевірку збирання.

Передбачуваність доступу тримається й на межі із зовнішніми системами: шар сумісний із постачальниками облікових записів на кшталт Keycloak, тому зміна такого постачальника не переписує матрицю ролей, а перевірка залишається в одному місці.

Підходи до розмежування ролей: де зберігати права

Розмежування доступу починається з питання, де живе джерело істини про права: від цього залежить, як швидко змінюється доступ після переведення співробітника і що бачить людина без мережі.

Чотири схеми, між якими реально обирають під час проєктування системи ролей, різняться не ідеологією, а ціною помилки.

Варіант Коли підходить Обмеження
Права на пристрої Автономна робота: склад, виїзний сервіс, офлайн-обходи Зміна прав потребує нового збирання, відкликання доступу в звільненого запізнюється
Серверна видача прав Чутливі дані, часті зміни ролей Кожен екран чекає відповіді, під час обриву зв'язку доступ зникає
Гібридна схема доступу Потрібні і миттєвий відгук, і керованість Потрібне правило розв'язання конфліктів локальної та серверної версії
Зовнішній постачальник входів Уже є корпоративний каталог співробітників Залежність від чужої доступності, власна логіка прав залишається

Кеш ролей потрібен у будь-якій зі схем. Права складаються в захищене сховище на пристрої разом із версією політики та міткою часу: під час запуску інтерфейс будується за локальною копією, а у фоні вона звіряється із сервером — нові права застосовуються без перезапуску застосунку.

Щоб відкликання доступу не розтягувалося на весь час життя копії, термін кешу тримають коротким, а зверху додають примусову інвалідацію сигналом із сервера. Далі розбираємо, як це влаштовано на рівні маршрутів і перевірок.

Етапи впровадження: від розбору сценаріїв до передачі регламентів

Систему ролей збирають не за інтуїцією: спочатку фіксують, що взагалі можна робити в застосунку, і лише потім вирішують, кому це дозволено. Кожен етап спирається на артефакт попереднього, тому підсумкова схема не розходиться з кодом через місяць після передачі.

  1. Інвентаризація дій у застосунку. Проходимо екрани й мережеві виклики, виписуємо кожну дію — від перегляду картки замовлення до зміни тарифу. Результат — таблиця «дія → ресурс → власник»; вона стає єдиним джерелом правди, і дія, що не потрапила до неї, у роль не просочується.

  2. Проєктування схеми ролей і успадкування. Ролі збираємо з наборів прав, а не з окремих перемикачів: базовий набір успадковується, дочірня роль додає або відкликає точково. Успадкування тримаємо в один-два рівні — глибше схему неможливо прочитати й перевірити.

  3. Налаштування перевірок доступу. Права перевіряються на серверному боці, на клієнті — лише видимість елементів інтерфейсу. Єдиний шар перевірки перехоплює всі вхідні запити, тому новий екран не можна випустити в обхід прав.

  4. Перевірка на реальних сценаріях. Тестуємо не ролі окремо, а шляхи користувачів: зміну ролі на активній сесії, відкликання прав, спробу дістатися до чужих даних. Окремо дивимося відмову в доступі — екран має пояснити причину, а не впасти.

  5. Передача регламентів. Віддаємо матрицю прав, опис ролей та інструкцію з додавання нової, проводимо навчання команди замовника. Адміністратор далі сам видає й знімає доступи, не звертаючись до розробки.

Що залишається в проєкті: матриця доступу, схеми та регламенти

Після запуску система ролей живе довше, ніж команда, яка її збирала: змінюються співробітники, тарифи, зовнішні партнери. Тому проєкт ми закриваємо не демонстрацією екрана, а набором артефактів, за якими нові інженери й підтримка ухвалюють рішення без нас.

  • Матриця «роль — дія» — для кожної дії зазначено, хто її виконує і на які об'єкти вона поширюється. Єдине джерело правди в спірних зверненнях: видно, що обмеження закладене навмисно, а не загубилося під час доопрацювання.
  • Опис успадкування ролей — з яких базових ролей збираються складені (наприклад, регіональний керівник = керівник + звіти свого регіону). Правиш базову — розумієш, у кого ще зміняться права.
  • Налаштування перевірок — де саме ухвалюється рішення про доступ: на сервері, у застосунку чи в обох місцях, і чому інтерфейс не можна вважати захистом.
  • Автотести на доступ — набір перевірок виду «роль X не може виконати дію Y», який проганяється під час кожного збирання. Розширили роль — тест покаже, чи не відкрився зайвий доступ.
  • Регламент видачі та відкликання доступу — хто погоджує, за який час права з'являються під час переведення співробітника і закриваються під час звільнення, де залишається слід про зміну.
  • Інструкція для служби підтримки — типові звернення («не бачу розділ», «зникли дані») і готові відповіді, щоб не ескалювати кожне на розробку.

Кейс: видача прав перестала бути ручною операцією

Партнерський контур мережі клінік «Гарант-Мед» тримався на ручній видачі доступів: 9 ролей і 60 сценаріїв у застосунку, але права на нові розділи дописували прямо в таблиці «користувач — екран».

Роль для партнерської лабораторії збирали копіюванням сусіднього запису, тому лікар однієї мережі бачив розклад іншої. Звернення до підтримки щодо доступів ішли по 8–10 на тиждень, а будь-яка зміна прав чекала випуску нового збирання.

Що змінили

Ролі описали декларативно — як набір прав на об'єкти й операції, а не на екрани. Перевірку винесли на серверний шар, а в застосунок віддаємо короткий зліпок прав з обмеженим терміном життя: нова видача підхоплюється без оновлення збирання.

Для партнерів завели окрему роль із прив'язкою до організації та виду послуг — її налаштовує адміністратор мережі, не зачіпаючи решти.

Заміри до і після

У цьому кейсі розмежування доступу частка ручних операцій під час видачі впала з 60% до 5%: типові випадки закрилися шаблонами ролей.

Звернення до підтримки скоротилися з 8–10 до 1–2 на тиждень, час випуску змін прав — із двох днів погоджень до півгодини і без нової версії застосунку. Журнал змін ролей залишився обов'язковим: спірні ситуації розбираються за ним за хвилини, а не за листуванням.

Чим відрізняється роль від права доступу?

Роль — це іменований набір дозволів, закріплений за функцією співробітника: комірник, старший зміни, регіональний керівник. Право доступу — атомарна операція над конкретним об'єктом: відкрити заявку, підтвердити виплату, вивантажити список клієнтів.

Розділення принципове: роль відповідає на питання «хто ця людина в процесі», право — «що саме вона може зробити». Коли роль змінюється, достатньо поправити один набір — інтерфейс і перевірки підтягнуть зміни автоматично.

Схема ламається, коли права починають видавати напряму, минаючи роль.

Спершу це виглядає зручною дрібницею для одного співробітника, а за пару релізів у двох менеджерів з однаковою посадою різні набори доступів, ніхто не пам'ятає причину відмінностей, і будь-яка перевірка прав перетворюється на археологію за історією змін.

Складені ролі та успадкування дозволів повертають керованість: базова роль описує спільний мінімум, прикладна — додає галузеві дозволи, а не переписує базу цілком.

Успадкування дає одне джерело істини, але потребує явних правил розв'язання конфліктів — інакше незрозуміло, що переможе, якщо одна роль дозволяє операцію, а інша її забороняє.

Обмеження схеми доступу варто закладати заздалегідь: глибину вкладеності, число ролей на одного користувача й перелік операцій, які не делегуються взагалі.

І перевірка завжди виконується на боці сервісу — у застосунку залишається лише відрисовка інтерфейсу за отриманим набором дозволів.

Роль і право — різні сутності з різним життєвим циклом. Тримайте їх окремо, і схема доступу залишається читабельною: видно, хто що може, чому і як це відкликати.

Технічні сумніви: інтеграції, кеш, офлайн-режим

Права в застосунку живуть у двох місцях: на сервері, де зберігається джерело істини, і в локальному кеші на пристрої — щоб інтерфейс не чекав відповіді мережі.

Розбіжність між ними дає більшість спірних ситуацій: співробітник бачить кнопку, яка йому вже недоступна, або не отримує щойно видане. Нижче — відповіді на те, що інженери й техліди запитують до старту робіт.

Що бачить співробітник, якщо мережа зникла?

Застосунок працює на останньому підтвердженому наборі прав із локального кешу, а операції, що потребують мережі, стають у чергу й виходять під час відновлення зв'язку. Сервер під час приймання все одно переперевіряє права — черга не стає обхідним шляхом.

Як застосунок дізнається про зміну прав, якщо кеш застарів?

У запису короткий термін життя плюс сигнал про зміну ролі: застосунок перезапитує набір прав, не чекаючи на сплив. Якщо сигнал загубився, рятує оновлення під час повернення в застосунок, а критичні дії перевіряються на сервері.

Застосунок працюватиме з нашою наявною системою входів?

Прив'язуємося до вашого каталогу користувачів, а не заводимо другий. Ролі та групи віддає чинна система входів, застосунок тримає поверх неї шар правил «що дозволено на цьому екрані». Дублювання облікових записів і ручної синхронізації не з'являється.

Як швидко закривається доступ у звільненого співробітника?

Відкликання йде від сервера: сесія позначається недійсною, оновлення прав вирушає на пристрій. Поки пристрій офлайн, він працює на старому наборі, але операції, що потребують свіжих прав, сервер до цього моменту не приймає — вікно закривається під час першого виходу в мережу.

Обговоримо задачу: надішліть опис доступу — повернемося з планом

Щоб повернутися з планом робіт щодо ролей, а не із загальними формулюваннями, нам потрібен мінімум ввідних.

Надішліть поточний опис доступу: перелік ролей, матрицю «роль → об'єкт → дія» і те, як права видаються та відкликаються сьогодні — вручну, через адмінку чи синхронізацією з корпоративним каталогом. Цього достатньо, щоб оцінити обсяг робіт і назвати порядок етапів.

Що допомагає прискорити старт проєкту:

  • список ролей і груп із розшифровкою, що кожна може робити в застосунку;
  • матриця прав у будь-якому вигляді — таблиця, скриншоти екранів, вивантаження з внутрішньої системи;
  • як влаштований вхід: логін і пароль, зовнішній провайдер, корпоративний обліковий запис;
  • де і як довго живуть сесії, як виконується вихід на всіх пристроях користувача;
  • що вже реалізовано: перевірки на екранах, приховування розділів, обмеження на боці сервера;
  • вимоги до журналу: чи потрібно фіксувати, хто і коли видав або відкликав право;
  • найближчі релізи та терміни, до яких потрібен робочий контур.

На першій розмові розберемо спірні місця: що допустимо вирішувати на клієнті, що обов'язково перевіряти на сервері, як переносити чинних користувачів без блокувань і простоїв.

Опишіть задачу доступу — повернемося з оцінкою обсягу робіт, планом за етапами та критеріями приймання, після чого фіксуємо дату старту.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714