add basic auth
This commit is contained in:
parent
f35749daea
commit
feb08bcc9f
@ -1,29 +1,43 @@
|
||||
package com.example.nto.config;
|
||||
|
||||
import com.example.nto.service.impl.H2UserDetailsService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||
import org.springframework.security.config.http.SessionCreationPolicy;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.web.SecurityFilterChain;
|
||||
|
||||
@EnableWebSecurity
|
||||
@Configuration
|
||||
public class SecurityConfig {
|
||||
@RequiredArgsConstructor
|
||||
@EnableConfigurationProperties
|
||||
public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
private final H2UserDetailsService h2UserDetailsService;
|
||||
|
||||
@Bean
|
||||
public BCryptPasswordEncoder bCryptPasswordEncoder() {
|
||||
return new BCryptPasswordEncoder(13);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
||||
@Override
|
||||
public void configure(HttpSecurity http) throws Exception {
|
||||
http
|
||||
.csrf().disable()
|
||||
.authorizeRequests()
|
||||
.antMatchers("/api/auth").permitAll()
|
||||
.antMatchers("/api/info").hasRole("Admin")
|
||||
.antMatchers("/api/open").authenticated()
|
||||
.anyRequest().authenticated();
|
||||
return http.build();
|
||||
.anyRequest().authenticated()
|
||||
.and().httpBasic()
|
||||
.and().sessionManagement().disable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(AuthenticationManagerBuilder builder)
|
||||
throws Exception {
|
||||
builder.userDetailsService(h2UserDetailsService);
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
public class EmployeeController {
|
||||
private final EmployeeService employeeService;
|
||||
|
||||
@GetMapping("/auth")
|
||||
@PostMapping("/auth")
|
||||
@ResponseStatus(HttpStatus.OK)
|
||||
public void auth(@RequestBody String login, @RequestBody String password) {
|
||||
employeeService.checkEmployee(login, password);
|
||||
|
@ -22,8 +22,8 @@ public class Employee {
|
||||
private String login;
|
||||
@Column(name = "password")
|
||||
private String password;
|
||||
@Column(name = "isAdmin")
|
||||
private Boolean isAdmin;
|
||||
@Column(name = "role")
|
||||
private String role;
|
||||
@Column(name = "name")
|
||||
private String name;
|
||||
@Column(name = "photo")
|
||||
|
@ -50,5 +50,7 @@ public class EmployeeServiceImpl implements EmployeeService {
|
||||
if (codeList.isEmpty()) {
|
||||
throw new IncorrectBodyException("incorrect body");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,32 @@
|
||||
package com.example.nto.service.impl;
|
||||
|
||||
import com.example.nto.entity.Employee;
|
||||
import com.example.nto.exception.NoSuchEmployeeException;
|
||||
import com.example.nto.repository.EmployeeRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class H2UserDetailsService implements UserDetailsService {
|
||||
private final EmployeeRepository employeeRepository;
|
||||
|
||||
@Override
|
||||
public UserDetails loadUserByUsername(String username) throws NoSuchEmployeeException {
|
||||
List<Employee> employees = employeeRepository.findByLogin(username);
|
||||
|
||||
if(employees == null) {
|
||||
throw new NoSuchEmployeeException("User not found");
|
||||
}
|
||||
Employee employee = employees.get(0);
|
||||
List<SimpleGrantedAuthority> authorities = List.of(new SimpleGrantedAuthority(employee.getRole()));
|
||||
|
||||
return new User(employee.getLogin(), employee.getPassword(), authorities);
|
||||
}
|
||||
}
|
@ -3,12 +3,16 @@ spring:
|
||||
# 10.6.66.117
|
||||
|
||||
datasource:
|
||||
url: jdbc:h2:mem:testdb
|
||||
url: jdbc:h2:mem:data
|
||||
username: root
|
||||
password:
|
||||
|
||||
h2:
|
||||
console:
|
||||
#enabled: false
|
||||
enabled: true
|
||||
settings:
|
||||
web-allow-others: true
|
||||
|
||||
jpa:
|
||||
#generate-ddl: false
|
||||
@ -30,8 +34,6 @@ spring:
|
||||
operationsSorter: method
|
||||
|
||||
security:
|
||||
basic:
|
||||
enable: false
|
||||
user:
|
||||
name: root
|
||||
password: root
|
||||
password: $2y$13$YSDWkm2eCjXPOJg2TXETD.AyQRE2JxXgIrGcNJEqF1ppx.cBLRdNW
|
@ -1,27 +1,27 @@
|
||||
INSERT INTO employee (id, login, password, name, photo, position, last_visit, is_admin)
|
||||
INSERT INTO employee (id, login, password, name, photo, position, last_visit, role)
|
||||
VALUES
|
||||
(1, 'pivanov', '$2a$13$XIDSGI7yCy8w4U2UlMVoQeTbQ18EQR.Pm1PExrGq4JkW5wDwdnu26', 'Иванов Петр Федорович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:30', false),
|
||||
(2, 'ipetrov', '$2a$13$Fpi5mPSNgz.PAeKXmHYBEuutZBgmNdM4fHJFGJbh2AtpLrSmsm2yO', 'Петров Иван Константинович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T02:35', false),
|
||||
(3, 'asemenov', '$2a$13$qjWp94aryBy4nJwYZkgN5uwj6VlU76f1OjezyeVunkwVMAVvvtUGG', 'Семенов Анатолий Анатольевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31', true),
|
||||
(4, 'afedorov', '$2a$13$sKN9jIo/xvGo37YuUUpHkO03yrmODw1PvFRytxu.i.QxLqLR7O7q6', 'Федоров Александр Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36', true),
|
||||
(5, 'dfrolov', '$2y$13$R.c0njPlR9ZvpsU.2uHA0enJEUoXgE2Y838XaMFSewXCfkyhkxMuK', 'Фролов Данила Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Программист', '2024-02-12T08:50', false),
|
||||
(6, 'emalakhova', '$$2y$13$QZMJ3cSJKSjCiJVttlQQ4ud2.RM..gKjUM8X4GEHPxgoM1E7w6sNW', 'Малахова Елена Алексеевна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T18:45', false),
|
||||
(7, 'kplazinich', '$2y$13$u6EVJQMUzTrt.bf3RbuTkOjHt6jHBshnX.sKlCAz3VVog/Dhm2GpK', 'Плазинич Катарина Митрофановна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31', true),
|
||||
(8, 'apavlova', '$2y$13$bTWP3pzJOkbSdUEC4tT/tey.uJaJ5j3WTGCt2ei0Axotu6V0m4bcq', 'Павлова Анна Вячеславовна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:36', true),
|
||||
(9, 'vpopova', '$2y$13$Y/VBGpUDgG6uh7gmmLgb2OWHu/NSeSSJ.iaOGIgV8ty/bv6kgffqm', 'Попова Виктория Павловна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Дизайнер', '2024-02-12T08:30', false),
|
||||
(10, 'psmirnov', '$2y$13$hatikRKXEcisfXOpuOR8HeKpO.ogBcsjpqqiNNr7q.D7bwxYd3qdG', 'Смирнов Павел Олегович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35', false),
|
||||
(11, 'oorlova', '$2y$13$nw4h8FKawbWBMMIvZbLyWOTBHT61Ki83pCP3sI5PCa0XKdIe7vPW.', 'Орлова Ольга Виссарионовна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-03-13T06:31', true),
|
||||
(12, 'ppaveletskiy', '$2y$13$NeBU9beHyj4CnT9hfC0m/edqL6aJOv8WDbhzoJJ.uvU8rUyarxjvO', 'Павелецкий Пётр Иванович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36', true),
|
||||
(13, 'isinyakov', '$2y$13$oKK0VIpyFn.SMtzJbKFpA.4y6Th8FLuAfrpfk35e0slVAL1CsR0Au', 'Синяков Иван Семенович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'SMMщик', '2024-02-13T08:35', false),
|
||||
(14, 'azhidkovsky', '$2y$13$9chkHsL2J05WVd0qdSPujODZDCLSwP2a7tm74CFqXnesAAKpwjd.y', 'Жидковский Алексей Данилович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31', true),
|
||||
(15, 'fpupkin', '$2y$13$4havKLBROje2ZAdL1568Ne7RIH/dDXTiyvP1i77uvGalDjiVoNQTm', 'Пупкин Федор Дмитриевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Сис-Админ', '2024-02-12T08:36', true),
|
||||
(16, 'eromanova', '$2y$13$x9VXfQF76fILjwt5sPt2IerTeDs3CgwLfJlIzHN5aPmA5Hwie.FVu', 'Романова Екатерина Ивановна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35', false),
|
||||
(17, 'rpushkin', '$2y$13$LyHbrXLAIhsaitxD9vKkruLaSAyAt8TLjbcx1v349XuYHLiNpBy5G', 'Пушкин Роман Андреевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Дизайнер', '2024-02-13T09:31', true),
|
||||
(18, 'emunts', '$2y$13$Yr/CWqF6uptFP0hdophrze5kkfFy4L1F4NLsxNeCpaIAX7m8q66Pa', 'Мунц Ерофей Борисович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:36', true),
|
||||
(19, 'vsergienko', '$2y$13$HBUhNaLCe8e7.4ly3LPoGuBxPULdQctm6fbYRrEqA0V.nwZjzav1i', 'Сергиенко Варфоломей Павлович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-03-12T01:30', false),
|
||||
(20, 'ppivovarov', '$2y$13$ftx1tjWPkdBkoSS2NYfVuO/WwS65WyP5KpBdIidWCXSH1KgcOS.Q6', 'Пивоваров Петр Петрович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:34', false),
|
||||
(21, 'sfedorov', '$2y$13$ggEXX8qCbmM3cjZxf9w2au6fpTNxw4yQti/zpw4asRQHV2E64Pnhq', 'Федоров Сергей Эдуардович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T12:31', true),
|
||||
(22, 'tplesetskiy', '$2y$13$lzB2QhxMCPuSDT14nqV2tOBpQzhX2KLq9IcwoNU6Cw6.NGnfrTIQa', 'Плесецкий Тимур Никитович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Арт-директор', '2024-02-12T08:56', true);
|
||||
(1, 'pivanov', '$2a$13$XIDSGI7yCy8w4U2UlMVoQeTbQ18EQR.Pm1PExrGq4JkW5wDwdnu26', 'Иванов Петр Федорович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:30', 'Employee'),
|
||||
(2, 'ipetrov', '$2a$13$Fpi5mPSNgz.PAeKXmHYBEuutZBgmNdM4fHJFGJbh2AtpLrSmsm2yO', 'Петров Иван Константинович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T02:35', 'Employee'),
|
||||
(3, 'asemenov', '$2a$13$qjWp94aryBy4nJwYZkgN5uwj6VlU76f1OjezyeVunkwVMAVvvtUGG', 'Семенов Анатолий Анатольевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31', 'Employee'),
|
||||
(4, 'afedorov', '$2a$13$sKN9jIo/xvGo37YuUUpHkO03yrmODw1PvFRytxu.i.QxLqLR7O7q6', 'Федоров Александр Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36', 'Admin'),
|
||||
(5, 'dfrolov', '$2y$13$R.c0njPlR9ZvpsU.2uHA0enJEUoXgE2Y838XaMFSewXCfkyhkxMuK', 'Фролов Данила Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Программист', '2024-02-12T08:50', 'Employee'),
|
||||
(6, 'emalakhova', '$$2y$13$QZMJ3cSJKSjCiJVttlQQ4ud2.RM..gKjUM8X4GEHPxgoM1E7w6sNW', 'Малахова Елена Алексеевна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T18:45', 'Employee'),
|
||||
(7, 'kplazinich', '$2y$13$u6EVJQMUzTrt.bf3RbuTkOjHt6jHBshnX.sKlCAz3VVog/Dhm2GpK', 'Плазинич Катарина Митрофановна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31', 'Admin'),
|
||||
(8, 'apavlova', '$2y$13$bTWP3pzJOkbSdUEC4tT/tey.uJaJ5j3WTGCt2ei0Axotu6V0m4bcq', 'Павлова Анна Вячеславовна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:36', 'Admin'),
|
||||
(9, 'vpopova', '$2y$13$Y/VBGpUDgG6uh7gmmLgb2OWHu/NSeSSJ.iaOGIgV8ty/bv6kgffqm', 'Попова Виктория Павловна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Дизайнер', '2024-02-12T08:30', 'Employee'),
|
||||
(10, 'psmirnov', '$2y$13$hatikRKXEcisfXOpuOR8HeKpO.ogBcsjpqqiNNr7q.D7bwxYd3qdG', 'Смирнов Павел Олегович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35', 'Employee'),
|
||||
(11, 'oorlova', '$2y$13$nw4h8FKawbWBMMIvZbLyWOTBHT61Ki83pCP3sI5PCa0XKdIe7vPW.', 'Орлова Ольга Виссарионовна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-03-13T06:31', 'Employee'),
|
||||
(12, 'ppaveletskiy', '$2y$13$NeBU9beHyj4CnT9hfC0m/edqL6aJOv8WDbhzoJJ.uvU8rUyarxjvO', 'Павелецкий Пётр Иванович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36', 'Admin'),
|
||||
(13, 'isinyakov', '$2y$13$oKK0VIpyFn.SMtzJbKFpA.4y6Th8FLuAfrpfk35e0slVAL1CsR0Au', 'Синяков Иван Семенович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'SMMщик', '2024-02-13T08:35', 'Employee'),
|
||||
(14, 'azhidkovsky', '$2y$13$9chkHsL2J05WVd0qdSPujODZDCLSwP2a7tm74CFqXnesAAKpwjd.y', 'Жидковский Алексей Данилович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31', 'Admin'),
|
||||
(15, 'fpupkin', '$2y$13$4havKLBROje2ZAdL1568Ne7RIH/dDXTiyvP1i77uvGalDjiVoNQTm', 'Пупкин Федор Дмитриевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Сис-Админ', '2024-02-12T08:36', 'Employee'),
|
||||
(16, 'eromanova', '$2y$13$x9VXfQF76fILjwt5sPt2IerTeDs3CgwLfJlIzHN5aPmA5Hwie.FVu', 'Романова Екатерина Ивановна', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35', 'Employee'),
|
||||
(17, 'rpushkin', '$2y$13$LyHbrXLAIhsaitxD9vKkruLaSAyAt8TLjbcx1v349XuYHLiNpBy5G', 'Пушкин Роман Андреевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Дизайнер', '2024-02-13T09:31', 'Employee'),
|
||||
(18, 'emunts', '$2y$13$Yr/CWqF6uptFP0hdophrze5kkfFy4L1F4NLsxNeCpaIAX7m8q66Pa', 'Мунц Ерофей Борисович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:36', 'Admin'),
|
||||
(19, 'vsergienko', '$2y$13$HBUhNaLCe8e7.4ly3LPoGuBxPULdQctm6fbYRrEqA0V.nwZjzav1i', 'Сергиенко Варфоломей Павлович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-03-12T01:30', 'Employee'),
|
||||
(20, 'ppivovarov', '$2y$13$ftx1tjWPkdBkoSS2NYfVuO/WwS65WyP5KpBdIidWCXSH1KgcOS.Q6', 'Пивоваров Петр Петрович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:34', 'Employee'),
|
||||
(21, 'sfedorov', '$2y$13$ggEXX8qCbmM3cjZxf9w2au6fpTNxw4yQti/zpw4asRQHV2E64Pnhq', 'Федоров Сергей Эдуардович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T12:31', 'Employee'),
|
||||
(22, 'tplesetskiy', '$2y$13$lzB2QhxMCPuSDT14nqV2tOBpQzhX2KLq9IcwoNU6Cw6.NGnfrTIQa', 'Плесецкий Тимур Никитович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Арт-директор', '2024-02-12T08:56', 'Admin');
|
||||
|
||||
INSERT INTO code (value)
|
||||
VALUES
|
||||
|
Loading…
x
Reference in New Issue
Block a user