Личный кабинет на AEM за секунды

Авторы: Суворова Светлана, Марков Александр

Специалисты Softwerke разработали готовое решение, которое позволит вам стартовать новый проект на Adobe Experience Manager (далее AEM) за секунды. Решение включает стандартную функциональность веб-сайта с личным кабинетом пользователя, основано на многолетнем опыте разработки веб-сайтов на AEM, использует современные технологии и библиотеки.

Содержание

1.Описание проекта «Личный кабинет на AEM»

Решение включает базовую функциональность стандартного личного кабинета веб-сайта:

  • регистрация и аутентификация пользователей
  • страница управления данными пользователя
  • рассылка email уведомлений
  • сервисы изменения и восстановления пароля
  • хранение данных пользователей в отдельной SQL базе данных
  • взаимодействие с базой данных с помощью ORM/Hibernate — читайте, как установить Hibernate 5.4.5/JPA 2.2 в AEM 6.4.4

2. Применяемые технологии и библиотеки

  • Java 8 — одна из самых распространенных LTS версий Java
  • Adobe Experience Manager 6.4+ — поддержка последних версий AEM
  • Maven 3 — один из самых популярных инструментов для сборки проекта
  • OSGi R6 annotations — новый стандарт для OSGi сервисов и компонентов, сменивший аннотации Apache Felix SCR
  • Sling Models — библиотека для удобной передачи конфигурации компонента из AEM Author диалога на frontend
  • Vue.js — современная и быстрая библиотека для реактивных frontend компонентов, заменяющая старомодный и негибкий подход библиотеки jQuery
  • MySQL или другая SQL база данных — безопасное хранилище данных пользователей
  • Hibernate ORM 5.4.5/JPA 2.2 — объектно-реляционный mapping данных из базы данных на Java объекты

3. Описание Maven архетипа

Использование готового Maven архетипа позволяет максимально быстро запустить новый AEM проект с личным кабинетом. Требуется лишь реализация требуемого заказчиком дизайна. Расширение функциональности требует меньших вложений, поскольку базовая функциональность реализована на основе AEM best practices.

3.1. Создание проекта на основе архетипа

При развертывании кода проекта из архетипа требуется задать следующие свойства:

  • groupId — Maven project groupId
  • artifactId — Maven project artifactId
  • version — Maven project version
  • package — название корневого Java пакета
  • artifactNameInDescription — название проекта в классах, сервисах, компонентах и т.п.
  • appsFolderName — название корневой /apps папки проекта в AEM
  • componentGroupName — название группы UI компонентов в AEM
  • contentFolderName — название корневой /content папки проекта в AEM
  • packageGroup — название группы AEM пакета (content package group)
  • brandId — идентификатор бренда заказчика
  • siteName — название сайта
  • javascriptNamespace — название пространства имен в JavaScript файлах
  • optionIncludeErrorHandler — включение отдельной страницы для HTTP 404

3.2. AEM Best Practices

Maven архетип включает следующие «лучшие практики» AEM разработки:

  • использование системных AEM пользователей для чтения и записи данных
  • OSGi конфигурация для подключения MySQL/Hibernate
  • OSGi конфигурация для свойств проекта типа времени сессии пользователя и ссылки восстановления пароля, redirect страниц и т.п.
  • проверка всех вводимых пользователем данных на клиенте и сервере
  • использование Maven профилей для установки пакетов приложения на AEM Author и Publish

3.3. Компонент для регистрации пользователей User Registration

Включает настройку всех полей и автоматическую аутентификацию нового пользователя при успешной регистрации (autologin).

3.4. Компонент для аутентификации пользователей User Login

Реализует вход пользователей через классическую HTML форму.

3.5. Компонент для управления данными пользователя User Profile

Включает настройку видимости всех полей формы и типа отображения компонента (встроенный или в модальном окне).

3.6. Компонент для смены пароля Password Change

Реализует смену пароля для аутентифицированного пользователя.

3.7. Компонент для восстановления пароля Password Reset

Реализует восстановление пароля для зарегистрированного пользователя с помощью email рассылки с уникальной ссылкой.