Простой и удобный подход к созданию учетной записи администратора для приложений Ruby on Rails и React.

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

Учетная запись администратора — это учетная запись с определенными функциями, которые недоступны обычным пользователям, которые просто регистрируются и создают учетную запись. Например, администратор может иметь право удалять неприемлемые комментарии, но обычный пользователь не сможет удалять комментарии других людей.

Я собираюсь использовать приложение, которое я только что создал, чтобы показать вам, как я реализовал функции администрирования. Пойдем!

ШАГ 1:

Создайте свое приложение. Пока не беспокойтесь о функциях администратора. Просто создайте интерфейс и серверную часть с учетом обычных пользователей. Я делаю это в первую очередь, потому что большая часть кода и логики, которые требуются для учетной записи администратора, очень похожи на код и логику, написанные для обычных пользователей.

ШАГ 2:

Создайте учетную запись для администратора — перейдите на страницу регистрации вашего приложения и создайте обычную учетную запись. Мое приложение требует, чтобы пользователи зарегистрировались с именем, именем пользователя, адресом электронной почты и паролем. Чтобы облегчить жизнь, я поставил имя и имя пользователя «admin». Это важно, потому что мы будем использовать эту информацию, чтобы идентифицировать и определить, является ли вошедший в систему пользователь администратором или нет.

Важное примечание. В моем приложении есть проверка, которая гарантирует уникальность каждого имени пользователя. Таким образом, мы можем быть уверены, что только у нас есть учетная запись с именем пользователя «admin».

ШАГ 3:

Вот где начинается самое интересное! Я предпочитаю начинать с серверной части, чтобы убедиться, что она работает гладко, а затем переходить к интерфейсу.

В моем приложении application_controller.rb я написал этот метод, который гарантирует, что определенные действия могут выполняться только администратором.

Как и у любой другой учетной записи/пользователя, у администратора есть уникальный идентификатор. Это идентифицирует учетную запись администратора и ограничивает доступ, если идентификатор сеанса (идентификатор текущего пользователя) не совпадает с идентификатором учетной записи администратора.

Мы запустим этот метод перед выполнением других действий, чтобы убедиться, что только администратор может выполнять эти действия.

ШАГ 4:

Мое приложение позволяет пользователям просматривать изображения и взаимодействовать с ними, оставляя комментарии и сохраняя определенные фрагменты в свой список избранного. По мере роста приложения я, как админ, хочу увеличивать базу художников и картин. Поэтому мне нужен способ создавать новых художников и новые произведения искусства, не предоставляя эту возможность другим аккаунтам.

В моем artists_controller.rb эта строка кода запускает метод admin_user, который мы написали в application_controller.rb (см. ШАГ 3). Однако этот метод выполняется только для действия create. Код проверит, что учетная запись, добавляющая исполнителя, является учетной записью администратора, прежде чем создавать нового исполнителя.

Только учетная запись с именем пользователя «admin» может создавать новых исполнителей.

Методы index и show доступны для любой учетной записи, поскольку мы указали, что хотим запускать admin_user только при использовании метода create.

В моем paintings_controller.rb я написал точно такой же код с несколькими дополнительными действиями. Только учетная запись администратора может рисовать create, update и destroy.

В этом блоге я покажу код только для действия create, но знайте, что логика работает одинаково для любого другого действия.

Используйте эту логику в любых других контроллерах, если у них есть методы, которые вы хотите, чтобы только учетная запись администратора могла выполнять.

И это весь код, который вам нужно написать для бэкенда! Теперь о фронтенде.

ШАГ 5:

Я создал компоненты с формами для добавления художников и произведений искусства — AddArtistForm.js и AddPaintingForm.js. Но как сделать эти формы видимыми и доступными для учетной записи администратора, но не для других учетных записей?

В своем приложении я предоставляю доступ к этим формам на странице профиля учетной записи, Profile.js.

Давайте пройдемся по этой троичной операции. У каждой учетной записи есть страница профиля. Этот код проверяет, является ли имя пользователя текущего пользователя «admin». Помните, что существуют проверки, которые гарантируют, что нет двух одинаковых имен пользователей. Таким образом, никто не сможет создать другую учетную запись с именем «admin» и получить доступ.

Если имя пользователя является «admin», кнопка для добавления исполнителя видна. То же самое касается кнопки добавления изображения. Однако, если имя пользователя не «admin», эти кнопки не будут видны.

Это страница профиля Бетти. У Бетти есть обычная учетная запись, поэтому единственные кнопки, которые она видит, — это кнопки для редактирования своей информации и кнопка для выхода из системы.

Это страница профиля для учетной записи администратора. Теперь мы можем видеть кнопки для добавления художников и иллюстраций в базу данных.

И последнее, но не менее важное: этот фрагмент кода перенаправляет администратора на форму, на которую он нажал, и оттуда администратор может добавлять художников и иллюстрации в базу данных.

Существует множество способов создания учетных записей администратора в React и Ruby on Rails. Однако всегда полезно знать, как сделать это с нуля, и, как видите, это не так страшно, как может показаться.

Удачного кодирования!