/Senebank

Primary LanguageJava

Senebank

Вводная

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

Задание 1.

В классе SecurityConfig в методе configure настроить HttpSecurity таким образом, чтобы авторизация и аутентификация осуществлялась через форму логина, которая расположена на странице main.html. Далее необходимо проверить, что только аутентифицированный пользователь способен получить доступ к своему и только своему счёту.

Требования к приложению:

  • Клиент осуществляет вход в свой аккаунт через форму на главной странице;
  • Если клиент не зарегистрирован, то регистрация осуществляется на другой странице;
  • Данные клиенты хранятся в базе данных MySQL (см. рекомендации по выполнению);
  • Если клиент вошёл успешно, то его перенаправляют на страницу с его номером счёта и текущим балансом. На этой странице он может перевести деньги на другой счёт;
  • Перевод на другой счёт может осуществлять только авторизованный пользователь.

Что требуется в отчёте

  1. Текст ТЗ в виде описания задания (без вводной) и списка требований к приложению;
  2. Листинги:
    • Метода configure;
    • Дополнительных классов/методов, если они добавлялись в проект для выполнения задания.
  3. Скриншоты:
    • Как пользователь видит свой счёт;
    • Как пользователь передаёт деньги между счётами.

Оформление отчёта

Обратите внимание на то, что отчёт перед сдачей на проверку должен быть оформлен согласно следующим требованиям:

  1. Основной шрифт для текста - Times New Roman, 14 пт;
  2. Межстрочный интервал - 1,5;
  3. Выравнивание - по ширине;
  4. Шрифт для листинга кода, названия классов и т.д - Courier New, Consolas или JetBrains Mono, размер не более 12 пт;
  5. Листинг кода должен быть на белом фоне (никаких скриншотов);
  6. Оформление титульного листа должно быть по единой утверждённой форме (брать у старост).
  7. Не оформленный должным образом отчёт приниматься на проверку не будет.

Рекомендации по выполнению практической работы

Общие сведения

  1. Для функционирования приложения необходимо поднять локальную\удалённую БД на MySQL и создать базу данных с названием “senebank”. Создавать самостоятельно какие-то таблицы не следует - Spring сам осуществит добавление соответствующих сущностей при первом запуске. Так же конфигурация должна совпадать с прописанной в файле application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/senebank
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
  1. В приложении уже добавлены некоторые классы, необходимые для работы авторизации через базу данных: UserDetailsServiceImpl SecurityUser А так же некоторые методы в SecurityConfig: daoAuthenticationProvider passwordEncoder SecurityConfig configure (не путать с configure(HttpSecurity)! SecurityConfig

Иными словами, всё что остаётся (возможно!) сделать в приложении - это настроить HttpSecurity на аутентификацию\авторизацию через форму логина с переадресацией на страницу клиентского аккаунта. В приложении на момент предоставления задания он сконфигурирован на разрешение всех запросов на корневой адрес и проверку авторизации на все остальные:

@Override
protected void configure(HttpSecurity http) throws Exception {
   http
          	.authorizeRequests()
          	.antMatchers("/").permitAll()
            .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
          	.anyRequest()
          	.authenticated();
}