diff --git a/src/main/java/ru/ldeloff/servermonitorbot/config/SshConfig.java b/src/main/java/ru/ldeloff/servermonitorbot/config/SshConfig.java index deb3255..bac7aed 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/config/SshConfig.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/config/SshConfig.java @@ -1,5 +1,8 @@ package ru.ldeloff.servermonitorbot.config; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import ru.ldeloff.servermonitorbot.model.SshServer; @@ -8,14 +11,8 @@ import java.util.List; @Configuration @ConfigurationProperties(prefix = "ssh") +@Getter +@Setter public class SshConfig { private List servers; - - public List getServers() { - return servers; - } - - public void setServers(List servers) { - this.servers = servers; - } } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java b/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java new file mode 100644 index 0000000..9c9e51d --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java @@ -0,0 +1,17 @@ +package ru.ldeloff.servermonitorbot.config; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import ru.ldeloff.servermonitorbot.model.dto.InitUserDto; + +import java.util.List; + +@Configuration +@ConfigurationProperties(prefix = "bot") +@Getter +@Setter +public class UserConfig { + private List users; +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java b/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java index 1f0b5ce..c589eab 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java @@ -7,9 +7,13 @@ import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Update; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import ru.ldeloff.servermonitorbot.model.Role; import ru.ldeloff.servermonitorbot.model.TelegramBot; +import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.repository.SshRepository; import ru.ldeloff.servermonitorbot.service.TelegramBotService; +import ru.ldeloff.servermonitorbot.service.role.RoleService; +import ru.ldeloff.servermonitorbot.service.user.UserService; import ru.ldeloff.servermonitorbot.utils.ui.TelegramBotKeyboard; import ru.ldeloff.servermonitorbot.utils.ui.uname.UnameChatButtonAggregate; @@ -21,32 +25,67 @@ public class TelegramBotController extends TelegramLongPollingBot { final TelegramBot telegramBot; final SshRepository sshRepository; final TelegramBotService telegramBotService; + final UserService userService; + final RoleService roleService; @Override public void onUpdateReceived(Update update) { + Role role = getRole(update); if (update.hasMessage()) { if (update.getMessage().hasText()) { String messageText = update.getMessage().getText(); switch (messageText) { case "/start" -> { - log.info("Получена команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName()); - telegramBotService.firstUse(update, this); + if (role.getId() < 3) { + log.info("Получена команда '" + messageText + + "' от " + update.getMessage().getChat().getUserName() + + " (" + update.getMessage().getChat().getId() + "). OK"); + telegramBotService.firstUse(update, this); + } else { + log.warn("Получена команда '" + messageText + + "' от " + update.getMessage().getChat().getUserName() + + " (" + update.getMessage().getChat().getId() + "). Нет прав"); + telegramBotService.notAuthorization(update, this); + } } case "Статус" -> { - log.info("Получена команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName()); - telegramBotService.getStatusSessions(update, this); + if (role.getId() < 3) { + log.info("Получена команда '" + messageText + + "' от " + update.getMessage().getChat().getUserName() + + " (" + update.getMessage().getChat().getId() + "). OK"); + telegramBotService.getStatusSessions(update, this); + } else { + log.warn("Получена команда '" + messageText + + "' от " + update.getMessage().getChat().getUserName() + + " (" + update.getMessage().getChat().getId() + "). Нет прав"); + telegramBotService.notAuthorization(update, this); + } } case "uname" -> { - log.info("Получена команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName()); - telegramBotService.sendUnameAggregate(update, this); + if (role.getId() < 3) { + log.info("Получена команда '" + messageText + + "' от " + update.getMessage().getChat().getUserName() + + " (" + update.getMessage().getChat().getId() + "). OK"); + telegramBotService.sendUnameAggregate(update, this); + } else { + log.warn("Получена команда '" + messageText + + "' от " + update.getMessage().getChat().getUserName() + + " (" + update.getMessage().getChat().getId() + "). Нет прав"); + telegramBotService.notAuthorization(update, this); + } } default -> { - log.warn("Неизвестная команда '" + messageText - + "' от " + update.getMessage().getChat().getUserName()); - telegramBotService.switchToMainMenu(update, this); + if (role.getId() < 3) { + log.warn("Неизвестная команда '" + messageText + + "' от " + update.getMessage().getChat().getUserName() + + " (" + update.getMessage().getChat().getId() + "). ОК"); + telegramBotService.switchToMainMenu(update, this); + } else { + log.warn("Неизвестная команда '" + messageText + + "' от " + update.getMessage().getChat().getUserName() + + " (" + update.getMessage().getChat().getId() + "). Нет прав"); + telegramBotService.notAuthorization(update, this); + } } } } @@ -56,20 +95,44 @@ public class TelegramBotController extends TelegramLongPollingBot { if (tags.length > 1) { switch (tags[0]) { case "uname": - log.info("Получена команда '" + messageText - + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName()); - telegramBotService.uname(update, this); + if (role.getId() < 3) { + log.info("Получена команда '" + messageText + + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() + + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). ОК"); + telegramBotService.uname(update, this); + } else { + log.info("Получена команда '" + messageText + + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() + + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). Нет прав"); + telegramBotService.notAuthorization(update, this); + } break; default: - log.warn("Неизвестная команда '" + messageText - + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName()); - telegramBotService.switchToMainMenu(update, this); + if (role.getId() < 3) { + log.warn("Неизвестная команда '" + messageText + + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() + + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). ОК"); + telegramBotService.switchToMainMenu(update, this); + } else { + log.warn("Неизвестная команда '" + messageText + + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() + + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). Нет прав"); + telegramBotService.notAuthorization(update, this); + } break; } } else { + if (role.getId() < 3) { log.warn("Неверный формат команды '" + messageText - + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName()); + + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() + + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). ОК"); telegramBotService.switchToMainMenu(update, this); + } else { + log.warn("Неверный формат команды '" + messageText + + "' от " + update.getCallbackQuery().getMessage().getChat().getUserName() + + " (" + update.getCallbackQuery().getMessage().getChat().getId() + "). Нет прав"); + telegramBotService.notAuthorization(update, this); + } } } } @@ -89,4 +152,19 @@ public class TelegramBotController extends TelegramLongPollingBot { super.onClosing(); sshRepository.disconnectSessions(); } + + private Role getRole(Update update) { + Long id = null; + if (update.hasMessage()) { + id = update.getMessage().getChat().getId(); + } else if (update.hasCallbackQuery()) { + id = update.getCallbackQuery().getMessage().getChat().getId(); + } + User user = userService.getByTelegramId(id); + if (user == null) { + return roleService.findRoleById(3L); + } else { + return user.getRole(); + } + } } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java b/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java new file mode 100644 index 0000000..560d72e --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java @@ -0,0 +1,34 @@ +package ru.ldeloff.servermonitorbot.init; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; +import ru.ldeloff.servermonitorbot.config.UserConfig; +import ru.ldeloff.servermonitorbot.mapper.UserMapper; +import ru.ldeloff.servermonitorbot.model.User; +import ru.ldeloff.servermonitorbot.model.dto.InitUserDto; +import ru.ldeloff.servermonitorbot.service.user.UserService; + +import java.util.List; + +@Component +public class AddUsers implements ApplicationRunner { + final List initUsers; + final UserService userService; + final UserMapper userMapper; + + @Autowired + public AddUsers(UserConfig userConfig, UserService userService, UserMapper userMapper) { + this.initUsers = userConfig.getUsers(); + this.userService = userService; + this.userMapper = userMapper; + } + + @Override + public void run(ApplicationArguments args) throws Exception { + initUsers.forEach(initUserDto -> { + User user = userService.saveOrUpdateUser(userMapper.dtoToUser(initUserDto)); + }); + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/mapper/UserMapper.java b/src/main/java/ru/ldeloff/servermonitorbot/mapper/UserMapper.java new file mode 100644 index 0000000..aa7811a --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/mapper/UserMapper.java @@ -0,0 +1,22 @@ +package ru.ldeloff.servermonitorbot.mapper; + +import org.springframework.stereotype.Component; +import ru.ldeloff.servermonitorbot.model.User; +import ru.ldeloff.servermonitorbot.model.dto.InitUserDto; +import ru.ldeloff.servermonitorbot.service.role.RoleService; + +@Component +public class UserMapper { + final RoleService roleService; + + public UserMapper(RoleService roleService) { + this.roleService = roleService; + } + + public User dtoToUser(InitUserDto initUserDto) { + User user = new User(); + user.setTelegramId(initUserDto.getTelegramId()); + user.setRole(roleService.findRoleByName(initUserDto.getRole())); + return user; + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/Role.java b/src/main/java/ru/ldeloff/servermonitorbot/model/Role.java index bdbbccf..d6f800d 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/model/Role.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/Role.java @@ -12,6 +12,6 @@ public class Role { @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; - @Column(name = "role") - private String role; + @Column(name = "name") + private String name; } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/User.java b/src/main/java/ru/ldeloff/servermonitorbot/model/User.java index b4a0ddd..c732b3e 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/model/User.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/User.java @@ -12,10 +12,10 @@ public class User { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(name = "login") - private Long login; + @Column(name = "telegram_id") + private Long telegramId; @ManyToOne - @JoinColumn(name = "id_role") + @JoinColumn(name = "role_id") private Role role; } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/dto/InitUserDto.java b/src/main/java/ru/ldeloff/servermonitorbot/model/dto/InitUserDto.java new file mode 100644 index 0000000..a18efdf --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/dto/InitUserDto.java @@ -0,0 +1,14 @@ +package ru.ldeloff.servermonitorbot.model.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.springframework.stereotype.Component; + +@Data +@Component +public class InitUserDto { + @NotNull + private long telegramId; + @NotNull + private String role; +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/repository/RoleRepository.java b/src/main/java/ru/ldeloff/servermonitorbot/repository/RoleRepository.java new file mode 100644 index 0000000..4bb81ec --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/repository/RoleRepository.java @@ -0,0 +1,13 @@ +package ru.ldeloff.servermonitorbot.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import ru.ldeloff.servermonitorbot.model.Role; + +import java.util.Optional; + +@Repository +public interface RoleRepository extends JpaRepository { + Optional findRoleByName(String name); + Optional findRoleById(Long id); +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/repository/UserRepository.java b/src/main/java/ru/ldeloff/servermonitorbot/repository/UserRepository.java new file mode 100644 index 0000000..ceaacd3 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/repository/UserRepository.java @@ -0,0 +1,10 @@ +package ru.ldeloff.servermonitorbot.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import ru.ldeloff.servermonitorbot.model.User; + +@Repository +public interface UserRepository extends JpaRepository { + User getByTelegramId(long id); +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotService.java index cf86879..507a7fc 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotService.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotService.java @@ -9,5 +9,6 @@ public interface TelegramBotService { void getStatusSessions(Update update, TelegramBotController bot); void sendUnameAggregate(Update update, TelegramBotController bot); void uname(Update update, TelegramBotController bot); - void firstUse(Update update, TelegramBotController telegramBotController); + void firstUse(Update update, TelegramBotController bot); + void notAuthorization(Update update, TelegramBotController bot); } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotServiceImpl.java index 53df118..84b24af 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotServiceImpl.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/TelegramBotServiceImpl.java @@ -31,6 +31,28 @@ public class TelegramBotServiceImpl implements TelegramBotService { message.setChatId(chatId); sendMessage(telegramBotKeyboard.uiForm(message), bot); } + + @Override + public void notAuthorization(Update update, TelegramBotController bot) { + long id = 0L; + String login = null; + long chatId = 0L; + if (update.hasMessage()) { + id = update.getMessage().getChat().getId(); + login = update.getMessage().getChat().getUserName(); + chatId = update.getMessage().getChatId(); + } else if (update.hasCallbackQuery()) { + id = update.getCallbackQuery().getMessage().getChat().getId(); + login = update.getCallbackQuery().getMessage().getChat().getUserName(); + chatId = update.getCallbackQuery().getMessage().getChatId(); + } + SendMessage message = new SendMessage(); + message.setText("У пользователя " + login + + " (" + id + ") недостаточно прав для выполнения этой команды"); + message.setChatId(chatId); + sendMessage(message, bot); + } + @Override public void switchToMainMenu(Update update, TelegramBotController bot) { SendMessage message = new SendMessage(); diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleService.java new file mode 100644 index 0000000..b26d5e1 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleService.java @@ -0,0 +1,9 @@ +package ru.ldeloff.servermonitorbot.service.role; + +import ru.ldeloff.servermonitorbot.model.Role; + +public interface RoleService { + Role findRoleByName(String name); + + Role findRoleById(Long id); +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleServiceImpl.java new file mode 100644 index 0000000..6cf52a8 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleServiceImpl.java @@ -0,0 +1,28 @@ +package ru.ldeloff.servermonitorbot.service.role; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import ru.ldeloff.servermonitorbot.model.Role; +import ru.ldeloff.servermonitorbot.repository.RoleRepository; + +import java.util.Locale; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class RoleServiceImpl implements RoleService { + private final RoleRepository roleRepository; + + @Override + public Role findRoleByName(String name) { + Optional role = roleRepository.findRoleByName(name.toUpperCase(Locale.ROOT)); + //noinspection OptionalGetWithoutIsPresent + return role.orElseGet(() -> roleRepository.findRoleByName("ANONYMOUS").get()); + } + + @Override + public Role findRoleById(Long id) { + Optional role = roleRepository.findRoleById(id); + return role.orElseGet(() -> roleRepository.findRoleByName("ANONYMOUS").get()); + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserService.java new file mode 100644 index 0000000..e7ea1ff --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserService.java @@ -0,0 +1,9 @@ +package ru.ldeloff.servermonitorbot.service.user; + +import ru.ldeloff.servermonitorbot.model.User; + +public interface UserService { + User saveOrUpdateUser(User user); + + User getByTelegramId(Long id); +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserServiceImpl.java new file mode 100644 index 0000000..ff2844a --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserServiceImpl.java @@ -0,0 +1,29 @@ +package ru.ldeloff.servermonitorbot.service.user; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import ru.ldeloff.servermonitorbot.model.User; +import ru.ldeloff.servermonitorbot.repository.UserRepository; + +@Service +@RequiredArgsConstructor +@Slf4j +public class UserServiceImpl implements UserService { + + final UserRepository userRepository; + + @Override + public User saveOrUpdateUser(User user) { + User existUser = userRepository.getByTelegramId(user.getTelegramId()); + if (existUser != null) { + user.setId(existUser.getId()); + } + return userRepository.save(user); + } + + @Override + public User getByTelegramId(Long id) { + return userRepository.getByTelegramId(id); + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java b/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java index 3ab4b9f..a07a478 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java @@ -17,8 +17,8 @@ public class TelegramBotKeyboard implements UiFormer { @Override public SendMessage uiForm(SendMessage message) { ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(); - replyKeyboardMarkup.setResizeKeyboard(true); //подгоняем размер - replyKeyboardMarkup.setOneTimeKeyboard(false); //скрываем после использования + replyKeyboardMarkup.setResizeKeyboard(true); + replyKeyboardMarkup.setOneTimeKeyboard(false); ArrayList keyboardRows = new ArrayList<>(); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index fd384fc..35a985d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -19,6 +19,9 @@ spring: bot: name: "ServerMonitorBot" token: "token" + users: + - telegramId: 123456789 + role: admin ssh: servers: - diff --git a/src/main/resources/db/scripts/release_0_0_1/changelog.xml b/src/main/resources/db/scripts/release_0_0_1/changelog.xml index 9607261..1b0334d 100644 --- a/src/main/resources/db/scripts/release_0_0_1/changelog.xml +++ b/src/main/resources/db/scripts/release_0_0_1/changelog.xml @@ -8,5 +8,9 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/01_create_table_users.sql b/src/main/resources/db/scripts/release_0_0_1/scripts/01_create_table_users.sql index 8d5f188..9164f99 100644 --- a/src/main/resources/db/scripts/release_0_0_1/scripts/01_create_table_users.sql +++ b/src/main/resources/db/scripts/release_0_0_1/scripts/01_create_table_users.sql @@ -4,7 +4,7 @@ --comment: Создание таблицы пользователей CREATE TABLE users ( - id integer PRIMARY KEY, + id SERIAL PRIMARY KEY, login VARCHAR(128), id_role integer ); diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/02_create_table_roles.sql b/src/main/resources/db/scripts/release_0_0_1/scripts/02_create_table_roles.sql index d09119d..e7d5fad 100644 --- a/src/main/resources/db/scripts/release_0_0_1/scripts/02_create_table_roles.sql +++ b/src/main/resources/db/scripts/release_0_0_1/scripts/02_create_table_roles.sql @@ -4,7 +4,7 @@ --comment: Создание таблицы ролей CREATE TABLE roles ( - id integer PRIMARY KEY, + id SERIAL PRIMARY KEY, role VARCHAR(128) ); diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/05_add_anonymous_role.sql b/src/main/resources/db/scripts/release_0_0_1/scripts/05_add_anonymous_role.sql new file mode 100644 index 0000000..ba5a19a --- /dev/null +++ b/src/main/resources/db/scripts/release_0_0_1/scripts/05_add_anonymous_role.sql @@ -0,0 +1 @@ +INSERT INTO roles (id, role) VALUES (3, 'ANONYMOUS'); \ No newline at end of file diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/06_refactor_users_table.sql b/src/main/resources/db/scripts/release_0_0_1/scripts/06_refactor_users_table.sql new file mode 100644 index 0000000..4a51d65 --- /dev/null +++ b/src/main/resources/db/scripts/release_0_0_1/scripts/06_refactor_users_table.sql @@ -0,0 +1,9 @@ +ALTER TABLE users + DROP COLUMN login; + +ALTER TABLE users + ADD COLUMN telegram_id INTEGER UNIQUE; + COMMENT ON COLUMN users.telegram_id IS 'Telegram ID пользователя'; + +ALTER TABLE users + DROP COLUMN id_role; \ No newline at end of file diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/07_refactor_roles_table.sql b/src/main/resources/db/scripts/release_0_0_1/scripts/07_refactor_roles_table.sql new file mode 100644 index 0000000..c39ec05 --- /dev/null +++ b/src/main/resources/db/scripts/release_0_0_1/scripts/07_refactor_roles_table.sql @@ -0,0 +1,6 @@ +ALTER TABLE roles + DROP COLUMN role; + +ALTER TABLE roles + ADD COLUMN name VARCHAR(128); +COMMENT ON COLUMN roles.name IS 'Имя роли'; \ No newline at end of file diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/08_add_roles.sql b/src/main/resources/db/scripts/release_0_0_1/scripts/08_add_roles.sql new file mode 100644 index 0000000..cdce579 --- /dev/null +++ b/src/main/resources/db/scripts/release_0_0_1/scripts/08_add_roles.sql @@ -0,0 +1,4 @@ +TRUNCATE TABLE roles CASCADE; +INSERT INTO roles (id, name) VALUES (1, 'ADMIN'); +INSERT INTO roles (id, name) VALUES (2, 'USER'); +INSERT INTO roles (id, name) VALUES (3, 'ANONYMOUS'); \ No newline at end of file