From 8eef40a88552d9df3fd5c433b94bb27e7a839327 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sun, 13 Mar 2022 14:47:49 +0400 Subject: [PATCH 01/13] #5 -- can upload file --- data/db.mv.db | Bin 36864 -> 61440 bytes .../ru/ulstu/controller/NewsController.java | 8 +++-- src/main/java/ru/ulstu/model/News.java | 23 ++++++++++++++ src/main/java/ru/ulstu/service/FileUtil.java | 29 ++++++++++++++++++ .../java/ru/ulstu/service/NewsService.java | 10 +++++- src/main/resources/application.properties | 3 +- src/main/resources/templates/editNews.html | 10 +++++- 7 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 src/main/java/ru/ulstu/service/FileUtil.java diff --git a/data/db.mv.db b/data/db.mv.db index c0b97943b57bc34165d26eb084f622a9a6e80f64..49a6a54388a3b0c978a5bd5d7c4a5f5f1c7f537f 100644 GIT binary patch literal 61440 zcmeG_ZEPIJbw`RPOOz;yvMpJ%q^!@DEhXpk?%sZ~3G5^9PCSVp5|5;%v}?< zBX!?=?am$Vj+8{jQarN3y_wyadGp?zH}l@SnKwS7#tWs2`<@YtJoEmqc_WG}%W?O7 zqx_x`*E8a7)pP1zaYQi}4aag8J;RPKR;tTReME_0@TxVxQpO)Hmb|)q-m8u{wxM}W zQ6G$me*yyn0|EmA0|EmA0|EmA0|EmA0|EmA0|EmA18+D6#)ba>hSNX*ATS^>ATS^> zATS^>ATS^>ATS^>ATS^>ATV&XF+ex@i;L6?K#iBY@<=ki?5vD97CasrNouwnFMAKw zM~d+kXUVI9dqBKesnkc3Nz(;S0oih0Eg7%-%iuX+>89Z-PUsc@Rj>Hvu}Y&{ACaZa z{Ri#^d)|BKz?LHsMNMkDVMez_w?_w~JEA+IL(yH)-O)YK;ppDzjnSK;H%IqH_eXDu z9*7={-Woj=Jsdp}86LPzy7O#4Gb@eFWKy%4h0(d(L|Rg1d3Ycu#fIMBNAjh)d}c<< zWu>X;0(p|QuS%#}yo}${ep%m_t##8xm=`PcBRnIaNWl^_P zMbR`(Ng9QsS11%st57stSt&ZQ;>eDxIcCArRK2KKnq?Qvq-PZ5yQEZlGB-6maJwW8 zU7(ZXnFtmR;A8ErO1Y_Y<}6pVwI9O+cLLg9W-QPJ?^Buk14QT2F{pDka{@YnIE6#( zd}bz}o1O~ZQ+%g^U@>VnH<`)LrY29*+*zPPOd6Y*9%UK1*@-sF(KkSj6FuH6WOEal z4s=I!y$k4?*)UyGY8zom$79fEsOuPzuilw@_`3~}3tDI)7pl4^jR24kg{=i;t%+5{aV7gpGvAI(VhN4cMNS{h(%sE-R-?XfhBB#e?E4hH@jfEcFB$x+o z8@LgA`tja_wpUksff17k?8joXxy$PW0C^MO<2)sA`<$3PH7-x(#!qUxmOYz$r%sy`4;ztbErM*|Wh5E(2UsyFJ3W)hotQ$alw)fI=^8Bcs4DE? zOeUL|!K*4x{RLzGr(URJG6I%Q42QRXto&mC#%7m%CXZHG zS0FRTr}MD%>a|49onC;o=M1#e`#U@+7tqpbx!LxwsC1^iSwND%7es98 z2F`9>d!qHpzyaXFGaHuO>1=1=4O#_5EfeAgf#)7shv$M)-A6LFUPp~znmC6N(8XJ! ziz~E?-Q~GGGdG)`Gjg_)PV3|MpHa;da(-T$p9opA<8TZ5fD{Of1Vj;p+CzYW&s{kN zK*)E6Efn&6+iPT4uPTD>0mO#^Q(kw0q}+d2IhoP(Q)gz5uiu96u|^`nG=UUIWQ1mwuW8X21+5*F3V?-yB(utnPrP)zqcczNX%MJN$e{Q(lcU

mo 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 T4)_06!-SEehPvJ6{2Kg!v-~pM delta 4442 zcmd^@TTB#J7{_OpUBCsoSy({8#ezyREOXo4IU7^8u&K6Qk&01Lot>R6R9IBNkTwk% z>r0;sM-v`Qy);ctd{CtATNO={n%awriAkF_#kQ%vBpTbMZ?C$AAe`DWXLERK!chg3Tbn&Kb8~@lJT%`xVN`| zM@$iQykigrGq$Xygn{%xpPAgyzsugb<|>0G9PCOr_YS1{W8zzOdH{aX(%?bW9O?>e z6m>OIHSMMC;y!*Q;JOl+=stFthag-vSSfHo&LqYWY4m zUS9?;oY*^YrS7%--1_QOUJuvW2EU%Fd=f2EU2Xb2TtTjy&UzFM?EnQ%UjcLgOYGd|ono}Uk!c2tyc z#XcdJ_tV(A;m=O4;ffwjPfr(Sd*JZ3I#00=-j$XOc^_29rDC7AJec?E*t&0iyb|Dw zcnOCpaOmpot5!&k%jm319QyYCNh_qp6%<;IL(@|@q{dYgs=}eahOb#?h2voqs>Y!| z&*M-e9zmfRE2ONu_$iJ><53h_fls@C^13xsi)$zp#G!i^aR|f#%KPZ`QZHB8cpEEEUt=l%o_ibp|vS}+W16Lke1wX%3mK9pD8x}T~X1x%K!Rbpo1EI5f zteS1olRaH&U$Ip(t|BxH3z`G9q2D^JF>f(m!c#8%@?tjUEAcJ!J>e_$mH7e_+x09@ z9-8sTn$W&%bSi8zR>E8FwZY$$&q2dnspIwVTSLP=Voe;k)_+93e&uLEe*jTGue#Ej5yLnHQ!Y{O;0N|JdI zF$~*3+}0Fz8HVh#rZaXbs*po46osJ{I~PTZip&!g?1?B1KrAr=+-aziOf7MNX{fF= z9EYR?^TZPFl4uIcLbj90h@!AGBMDo&YY}nPBH~KI`C6isA_i=~QwW2dC7txEvGSM! z3MU;Slb74qUtmq5^LlxX??!!+tDo4h(a*z|H@{ktZ9yuOAO{0}@m0eRZ+OCCM3|+F zT%uwC(^jgg8?vLq=vK0o7S&X@G7Xo~!kSwp+zLoWgsw6qikcpEFRB~vMH8}nVj=>Z zWPoC5hMkNWPJ|t0bsVZarb#JxYO*V}AyJbPqKT(kJrsJ;sYJ1{B%j?*? z9jN7F9ir8e&C$Cg*zeS~3mxB+vs;%L-C6>6?B7FKdNu<~rxwf7`dKVZ&BxLCL%WT2EM7#aIdmOV4Fu=`q66hqGAv^V}?L%*fJqH%osYES;n* zo#gxs1Fqa*sjJPm392uKpzqq)vb)Tg)S9EApRd0pUG_Xpx9;Lb=JuX< z_xGv)s=v>OD7ziEFljwepyxC6M3E7S=oi1J&FTL{p*pY#3K1|e3Snhah$u!OtZWKV zMJYrSqYzb;LPRkNA?2nJ8Dtb9icyFvN+GOl3Snha2rK6I#8(+gsA3ed&ZHD_SQ5og zdW MAX_NEWS_TEXT_PREVIEW_LENGTH ? text.substring(0, MAX_NEWS_TEXT_PREVIEW_LENGTH) + "..." diff --git a/src/main/java/ru/ulstu/service/FileUtil.java b/src/main/java/ru/ulstu/service/FileUtil.java new file mode 100644 index 0000000..af9fb4a --- /dev/null +++ b/src/main/java/ru/ulstu/service/FileUtil.java @@ -0,0 +1,29 @@ +package ru.ulstu.service; + +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; + +public class FileUtil { + + public static void saveFile(String uploadDir, String fileName, + MultipartFile multipartFile) throws IOException { + Path uploadPath = Paths.get(uploadDir); + + if (!Files.exists(uploadPath)) { + Files.createDirectories(uploadPath); + } + + try (InputStream inputStream = multipartFile.getInputStream()) { + Path filePath = uploadPath.resolve(fileName); + Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING); + } catch (IOException ioe) { + throw new IOException("Could not save image file: " + fileName, ioe); + } + } +} diff --git a/src/main/java/ru/ulstu/service/NewsService.java b/src/main/java/ru/ulstu/service/NewsService.java index f49dbdd..feac00a 100644 --- a/src/main/java/ru/ulstu/service/NewsService.java +++ b/src/main/java/ru/ulstu/service/NewsService.java @@ -7,6 +7,7 @@ import ru.ulstu.model.News; import ru.ulstu.repository.NewsRepository; import javax.validation.constraints.NotNull; +import java.io.IOException; import java.util.Date; import java.util.List; @@ -27,12 +28,19 @@ public class NewsService { newsRepository.save(news); } - public void save(News news) { + public void save(News news) throws IOException { + String fileName = System.currentTimeMillis() + ""; + news.setImageFileName(fileName); + if (news.getId() != null && (news.getId() != 0)) { newsRepository.save(news); } else { create(news); } + + String uploadDir = "news-photos/"; + FileUtil.saveFile(uploadDir, fileName, news.getImageFile()); + } public News getById(@NotNull Integer id) { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 14058f2..89e854d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,11 +3,12 @@ # You may use, distribute and modify this code, please write to: romanov73@gmail.com. # # - spring.main.banner-mode=off logging.level.tech.athene=DEBUG server.port=8080 spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false +spring.servlet.multipart.max-file-size=100000000 +spring.servlet.multipart.max-request-size=100000000 # go to http://localhost:8080/h2-console spring.datasource.url=jdbc:h2:file:./data/db spring.datasource.driverClassName=org.h2.Driver diff --git a/src/main/resources/templates/editNews.html b/src/main/resources/templates/editNews.html index 71a8aad..d448036 100644 --- a/src/main/resources/templates/editNews.html +++ b/src/main/resources/templates/editNews.html @@ -10,7 +10,7 @@ layout:decorate="~{default}">

Редактирование новости:

-
+ @@ -27,6 +27,14 @@

Не может быть пустым

+
+ + + +

+ Ошибка

+
Отмена From 27ff4a3f4e820a6628bc833fec69bc92a08755b8 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 14 Mar 2022 12:18:38 +0400 Subject: [PATCH 02/13] #7 -- add mvc for meetings --- data/db.mv.db | Bin 61440 -> 49152 bytes .../configuration/SecurityConfiguration.java | 2 +- .../ru/ulstu/controller/NewsController.java | 2 + src/main/java/ru/ulstu/meeting/Meeting.java | 55 +++++++++++ .../ru/ulstu/meeting/MeetingController.java | 88 ++++++++++++++++++ .../ru/ulstu/meeting/MeetingRepository.java | 9 ++ .../java/ru/ulstu/meeting/MeetingService.java | 47 ++++++++++ src/main/resources/templates/admin.html | 3 + src/main/resources/templates/default.html | 4 +- src/main/resources/templates/editMeeting.html | 33 +++++++ src/main/resources/templates/meetings.html | 40 ++++++++ src/main/resources/templates/viewMeeting.html | 23 +++++ 12 files changed, 303 insertions(+), 3 deletions(-) create mode 100644 src/main/java/ru/ulstu/meeting/Meeting.java create mode 100644 src/main/java/ru/ulstu/meeting/MeetingController.java create mode 100644 src/main/java/ru/ulstu/meeting/MeetingRepository.java create mode 100644 src/main/java/ru/ulstu/meeting/MeetingService.java create mode 100644 src/main/resources/templates/editMeeting.html create mode 100644 src/main/resources/templates/meetings.html create mode 100644 src/main/resources/templates/viewMeeting.html diff --git a/data/db.mv.db b/data/db.mv.db index 49a6a54388a3b0c978a5bd5d7c4a5f5f1c7f537f..1c534f284e2845a2346862a6ae7b9e030cd401ca 100644 GIT binary patch literal 49152 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 literal 61440 zcmeG_ZEPIJbw`RPOOz;yvMpJ%q^!@DEhXpk?%sZ~3G5^9PCSVp5|5;%v}?< zBX!?=?am$Vj+8{jQarN3y_wyadGp?zH}l@SnKwS7#tWs2`<@YtJoEmqc_WG}%W?O7 zqx_x`*E8a7)pP1zaYQi}4aag8J;RPKR;tTReME_0@TxVxQpO)Hmb|)q-m8u{wxM}W zQ6G$me*yyn0|EmA0|EmA0|EmA0|EmA0|EmA0|EmA18+D6#)ba>hSNX*ATS^>ATS^> zATS^>ATS^>ATS^>ATS^>ATV&XF+ex@i;L6?K#iBY@<=ki?5vD97CasrNouwnFMAKw zM~d+kXUVI9dqBKesnkc3Nz(;S0oih0Eg7%-%iuX+>89Z-PUsc@Rj>Hvu}Y&{ACaZa z{Ri#^d)|BKz?LHsMNMkDVMez_w?_w~JEA+IL(yH)-O)YK;ppDzjnSK;H%IqH_eXDu z9*7={-Woj=Jsdp}86LPzy7O#4Gb@eFWKy%4h0(d(L|Rg1d3Ycu#fIMBNAjh)d}c<< zWu>X;0(p|QuS%#}yo}${ep%m_t##8xm=`PcBRnIaNWl^_P zMbR`(Ng9QsS11%st57stSt&ZQ;>eDxIcCArRK2KKnq?Qvq-PZ5yQEZlGB-6maJwW8 zU7(ZXnFtmR;A8ErO1Y_Y<}6pVwI9O+cLLg9W-QPJ?^Buk14QT2F{pDka{@YnIE6#( zd}bz}o1O~ZQ+%g^U@>VnH<`)LrY29*+*zPPOd6Y*9%UK1*@-sF(KkSj6FuH6WOEal z4s=I!y$k4?*)UyGY8zom$79fEsOuPzuilw@_`3~}3tDI)7pl4^jR24kg{=i;t%+5{aV7gpGvAI(VhN4cMNS{h(%sE-R-?XfhBB#e?E4hH@jfEcFB$x+o z8@LgA`tja_wpUksff17k?8joXxy$PW0C^MO<2)sA`<$3PH7-x(#!qUxmOYz$r%sy`4;ztbErM*|Wh5E(2UsyFJ3W)hotQ$alw)fI=^8Bcs4DE? zOeUL|!K*4x{RLzGr(URJG6I%Q42QRXto&mC#%7m%CXZHG zS0FRTr}MD%>a|49onC;o=M1#e`#U@+7tqpbx!LxwsC1^iSwND%7es98 z2F`9>d!qHpzyaXFGaHuO>1=1=4O#_5EfeAgf#)7shv$M)-A6LFUPp~znmC6N(8XJ! ziz~E?-Q~GGGdG)`Gjg_)PV3|MpHa;da(-T$p9opA<8TZ5fD{Of1Vj;p+CzYW&s{kN zK*)E6Efn&6+iPT4uPTD>0mO#^Q(kw0q}+d2IhoP(Q)gz5uiu96u|^`nG=UUIWQ1mwuW8X21+5*F3V?-yB(utnPrP)zqcczNX%MJN$e{Q(lcU

mo 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 T4)_06!-SEehPvJ6{2Kg!v-~pM diff --git a/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java b/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java index f893257..f479e11 100644 --- a/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java +++ b/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java @@ -45,7 +45,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { log.debug("Security enabled"); http.authorizeRequests() .antMatchers("/").permitAll() - .antMatchers("/login", "/index", "/news/**", "/h2-console/*", "/h2-console").permitAll() + .antMatchers("/login", "/index", "/news/**", "/meetings/**", "/h2-console/*", "/h2-console").permitAll() .antMatchers("/swagger-ui.html").hasAuthority(UserRoleConstants.ADMIN) .anyRequest().authenticated() .and() diff --git a/src/main/java/ru/ulstu/controller/NewsController.java b/src/main/java/ru/ulstu/controller/NewsController.java index a2f2859..139daa5 100644 --- a/src/main/java/ru/ulstu/controller/NewsController.java +++ b/src/main/java/ru/ulstu/controller/NewsController.java @@ -59,6 +59,7 @@ public class NewsController { } @GetMapping("/editNews/{newsId}") + @Secured({UserRoleConstants.ADMIN}) public String editNews(@PathVariable(value = "newsId") Integer id, Model model) { model.addAttribute("news", (id != null && id != 0) ? newsService.getById(id) : new News()); return "editNews"; @@ -82,6 +83,7 @@ public class NewsController { } @GetMapping("deleteNews/{newsId}") + @Secured({UserRoleConstants.ADMIN}) public String delete(@PathVariable(value = "newsId") Integer id) { newsService.delete(id); return "redirect:/news/news"; diff --git a/src/main/java/ru/ulstu/meeting/Meeting.java b/src/main/java/ru/ulstu/meeting/Meeting.java new file mode 100644 index 0000000..fcc9266 --- /dev/null +++ b/src/main/java/ru/ulstu/meeting/Meeting.java @@ -0,0 +1,55 @@ +package ru.ulstu.meeting; + +import org.springframework.format.annotation.DateTimeFormat; +import ru.ulstu.model.BaseEntity; + +import javax.persistence.Entity; +import javax.persistence.Lob; +import javax.validation.constraints.NotEmpty; +import java.util.Date; + +@Entity +public class Meeting extends BaseEntity { + @NotEmpty(message = "Заголовок не может быть пустым") + private String title; + + @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm") + private Date date; + + @Lob + @NotEmpty(message = "Текст заседания не может быть пустым") + private String text; + + public Meeting() { + } + + public Meeting(String title, String text, Date date) { + this.title = title; + this.date = date; + this.text = text; + } + + public String getTitle() { + return title; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setText(String text) { + this.text = text; + } + + public String getText() { + return text; + } +} diff --git a/src/main/java/ru/ulstu/meeting/MeetingController.java b/src/main/java/ru/ulstu/meeting/MeetingController.java new file mode 100644 index 0000000..f85eea3 --- /dev/null +++ b/src/main/java/ru/ulstu/meeting/MeetingController.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2021 Anton Romanov - All Rights Reserved + * You may use, distribute and modify this code, please write to: romanov73@gmail.com. + * + */ + +package ru.ulstu.meeting; + +import org.springframework.data.domain.Page; +import org.springframework.security.access.annotation.Secured; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import ru.ulstu.model.OffsetablePageRequest; +import ru.ulstu.model.UserRoleConstants; + +import javax.validation.Valid; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +@Controller +@RequestMapping("meetings") +public class MeetingController { + private final static int DEFAULT_PAGE_SIZE = 10; + private final MeetingService meetingService; + + public MeetingController(MeetingService meetingService) { + this.meetingService = meetingService; + } + + @GetMapping("/meetings") + public String listMeetings(Model model, + @RequestParam Optional page, + @RequestParam Optional size) { + int currentPage = page.orElse(1); + int pageSize = size.orElse(DEFAULT_PAGE_SIZE); + + Page meetingsPage = meetingService.getMeetings(new OffsetablePageRequest(currentPage - 1, pageSize)); + model.addAttribute("meetings", meetingsPage); + int totalPages = meetingsPage.getTotalPages(); + if (totalPages > 0) { + List pageNumbers = IntStream.rangeClosed(1, totalPages) + .boxed() + .collect(Collectors.toList()); + model.addAttribute("pageNumbers", pageNumbers); + } + return "meetings"; + } + + @GetMapping("/editMeeting/{meetingId}") + @Secured({UserRoleConstants.ADMIN}) + public String editMeeting(@PathVariable(value = "meetingId") Integer id, Model model) { + model.addAttribute("meeting", (id != null && id != 0) ? meetingService.getById(id) : new Meeting()); + return "editMeeting"; + } + + @GetMapping("/meetings/{meetingId}") + public String viewMeeting(@PathVariable(value = "meetingId") Integer id, Model model) { + model.addAttribute("meeting", id != null ? meetingService.getById(id) : new Meeting()); + return "viewMeeting"; + } + + @PostMapping("saveMeeting") + @Secured({UserRoleConstants.ADMIN}) + public String saveNews(@Valid @ModelAttribute Meeting meeting, + BindingResult result) { + if (result.hasErrors()) { + return "editMeeting"; + } + meetingService.save(meeting); + return "redirect:/meetings/meetings"; + } + + @GetMapping("deleteMeeting/{meetingId}") + @Secured({UserRoleConstants.ADMIN}) + public String delete(@PathVariable(value = "meetingId") Integer id) { + meetingService.delete(id); + return "redirect:/meetings/meetings"; + } +} diff --git a/src/main/java/ru/ulstu/meeting/MeetingRepository.java b/src/main/java/ru/ulstu/meeting/MeetingRepository.java new file mode 100644 index 0000000..e3e964d --- /dev/null +++ b/src/main/java/ru/ulstu/meeting/MeetingRepository.java @@ -0,0 +1,9 @@ +package ru.ulstu.meeting; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; + +interface MeetingRepository extends JpaRepository { + Page findByOrderByDateDesc(Pageable pageable); +} diff --git a/src/main/java/ru/ulstu/meeting/MeetingService.java b/src/main/java/ru/ulstu/meeting/MeetingService.java new file mode 100644 index 0000000..fb92aef --- /dev/null +++ b/src/main/java/ru/ulstu/meeting/MeetingService.java @@ -0,0 +1,47 @@ +package ru.ulstu.meeting; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import ru.ulstu.service.NewsService; + +import javax.validation.constraints.NotNull; + +@Service +public class MeetingService { + private final MeetingRepository meetingRepository; + private final NewsService newsService; + + public MeetingService(MeetingRepository meetingRepository, + NewsService newsService) { + this.meetingRepository = meetingRepository; + this.newsService = newsService; + } + + public void create(Meeting meeting) { + meetingRepository.save(meeting); + newsService.create("Очередное заседание семинара", "Заседание семинара состоится " + meeting.getDate()); + } + + public void save(Meeting meeting) { + if (meeting.getId() != null && (meeting.getId() != 0)) { + meetingRepository.save(meeting); + } else { + create(meeting); + } + } + + public Meeting getById(@NotNull Integer id) { + return meetingRepository + .findById(id) + .orElseThrow(() -> new RuntimeException("Запись о заседании не найдена")); + } + + public void delete(Integer id) { + meetingRepository.deleteById(id); + } + + public Page getMeetings(Pageable pageable) { + return meetingRepository.findByOrderByDateDesc(pageable); + } +} diff --git a/src/main/resources/templates/admin.html b/src/main/resources/templates/admin.html index 22e05cf..a76d673 100644 --- a/src/main/resources/templates/admin.html +++ b/src/main/resources/templates/admin.html @@ -10,5 +10,8 @@ + + + diff --git a/src/main/resources/templates/default.html b/src/main/resources/templates/default.html index 99f7ed0..505c93c 100644 --- a/src/main/resources/templates/default.html +++ b/src/main/resources/templates/default.html @@ -36,10 +36,10 @@ Новости

+ diff --git a/src/main/resources/templates/organizers.html b/src/main/resources/templates/organizers.html new file mode 100644 index 0000000..4b518ec --- /dev/null +++ b/src/main/resources/templates/organizers.html @@ -0,0 +1,29 @@ + + + + +
+

Состав организаторов семинара

+
    +
  • + Ярушкина Н.Г., профессор, д.т.н., профессор +
  • +
  • + Мошкин В.С., доцент, к.т.н. +
  • +
  • + Романов А.А., зав. кафедрой, доцент, к.т.н., доцент +
  • +
  • + Гуськов Г.Ю., доцент, к.т.н. +
  • +
  • + Филиппов А.А., доцент, к.т.н. +
  • +
+
+ From 0a7040d4c075bfb9fa676c3a4b466991da9498bb Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Fri, 18 Mar 2022 09:31:32 +0400 Subject: [PATCH 10/13] #7 -- fix url, add plan --- .../configuration/SecurityConfiguration.java | 3 ++- src/main/resources/public/docs/plan2022.docx | Bin 0 -> 15852 bytes src/main/resources/templates/docs.html | 5 ++++- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/public/docs/plan2022.docx diff --git a/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java b/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java index 19a8a6f..5da4970 100644 --- a/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java +++ b/src/main/java/ru/ulstu/configuration/SecurityConfiguration.java @@ -45,7 +45,8 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { log.debug("Security enabled"); http.authorizeRequests() .antMatchers("/").permitAll() - .antMatchers("/login", "/index", "/news/**", "/meetings/**", "/files/**", "/docs/**", "/organizers", "/webjars/**", "/h2-console/*", "/h2-console").permitAll() + .antMatchers("/login", "/index", "/news/**", "/meetings/**", "/files/**", "/docs/**", + "/public/**", "/organizers", "/webjars/**", "/h2-console/*", "/h2-console").permitAll() .antMatchers("/swagger-ui.html").hasAuthority(UserRoleConstants.ADMIN) .anyRequest().authenticated() .and() diff --git a/src/main/resources/public/docs/plan2022.docx b/src/main/resources/public/docs/plan2022.docx new file mode 100644 index 0000000000000000000000000000000000000000..fb2a0f786cf02eea111f28c9aeaedbd8e0c34f34 GIT binary patch literal 15852 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/templates/docs.html b/src/main/resources/templates/docs.html index 7a7d63b..6d13917 100644 --- a/src/main/resources/templates/docs.html +++ b/src/main/resources/templates/docs.html @@ -7,8 +7,11 @@ From a936f80a1dfaba12c14023914b329958b9d808fe Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Fri, 18 Mar 2022 11:10:23 +0400 Subject: [PATCH 11/13] #7 -- fix docs section --- data/db.mv.db | Bin 65536 -> 69632 bytes src/main/resources/templates/docs.html | 18 ++++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/data/db.mv.db b/data/db.mv.db index 22d3d8d7536fa95612db6002fc8d5bf104b9cf0f..60c2a02c59086ff5d21a88e1721ec0fa4c810a01 100644 GIT binary patch delta 6677 zcmeI0du$X%9LIN#TM8}o`br;%z=3VGa5TGjyLY#znAR5{3ed+-XJ&V2dv^+n|M=)1 zz5DL$&F#(nzMuKdjE;s!4~2JK2;lD4js|GOtv+)YZZ(IpiL{i=shTpbpNy1mwe^}K zk!F~S=lTZV?b$@U&n#rsc)vcFm1T&!#}>8c5>S#PSx%>6GCsVm-^?auRZgkNRQyhJ zX#2K-LRL;dl#gv$y!2K8gz&@(LC8EpU(M>~*4j|GR=iXYgo(NX=$qI$*lh1#Bmz)x zA6nd94kt zvh7JSGILs^&8^O;RQ$61i2c;cpDVy)_P%u=Rz*&4VYfy)KEk)6yL%Jh1^fBllVLDv z59-6=p5+3&qxOMD(plZ%$(D|}1-;+w+*UBm9i4Jg5W-{Yx`Y;?5^fzS+}??&Nb}$7 zBA($+xq|%1^W62(-m2#Txsy!hq!kA_1oE*Zxr8!(_9aU(Bt?pk6h^k2hF1+}{FC}N zsPjdk#Rs<)t{5083}>b1xbDaDaRAYa`GvUq4DMc%l9J*U7w+CvRi#w-kzn^aIy=-2 zpnYnrGc;2WX0+V2+1`EIFJLE}tI(>IBt4~>o>J3kDd8(i%}AcoO#B#}N(I^sg=@2t z0i|V9-sg15gwjr5%6RlRrE?$DWmA#8HcQqrX-}z^p>jXM86B@pgEI8{#6Q9Cl?K!J zv1{F5uR%Of&Ij%N{ojKQ&gPtRb3QXPQWH32DLv*<(U%aKS}6JOb0E zjW9t8Fu_1uW1G+`gR^_uNX6P+*r@ydq+;)CToUnc}HW?op z7#PmtdOshiOk1a4^LFNcp}Qf6H^RN zOffuB<>HAch9{zYJW=W5i7AFBrWl@x^6*5IhbN+lK^)2u<>86m>EemCIe4n`Z)JE= z>;wH@gYnUd8EEwP*%$jo&kZE>9imwoLrpS=n9L#CwCEDs6~mZv3ZXc<1Tke2ha8Vp zEbb)v#U7>k#d)2UUk;M|(o6G8Bh4==$uA3NeyJe&rGw^|&r9c*w@T)h6C}S(6y=xo zW%J8gl3!q%{1PpfU+yFMCI3QjS3{d;9Kk7n=C=1OL~3_kceLnd=eQ&Bsxe|g=Tcx zYM?6vW>DD-TLR^6&@=s;^`y7r#CzRv5<7* zUY|n5A6`hJ%B2ufj6zho6mk`%kgF(#m|_%i6{QeW9)*}>6mk`%kgF(#sB$Spl}jP2 zTnbU;Qi$EjDCD*|6xyj!I!JCvVvR0eeTz8J(EaoOU(0?yM zrcXf*nWm3SUDgd%O)Df+SPYqFAXFGAcFIY1j#C1G9EYBC%943YSZ=7uUqr2Zf`$tF zgaD3B&MOWT-!{D?%;Q2u87up)HUq9U@DAm_?ds~FtI_eV8Zp~${;>s}`KrkYth-{- z^2?nQP$SUfr_gk`5Q3)t#n>{sdukFX7z|wJ)C}(KiMfdFo|yW#f&s@9h61*GN@iF* zd6~u&-#(nzxRV!Mku^1?;{ZRfvDuKA*{tbin~JqltV@dJZGIiE8Ir|KlpztXy*f1u z+<@Mmx*B|ks?REsH;C_!;V{1$A1E9{J!hkZgX~; zf9$_7I)W?C|ts)<{yj#x4tlsdl8X~+n^x{yWwr$o>+*GXg=Y$4l{iP7D^`mUu?BrGl|rYd z7K*FuC&Zbk=4^E5t{H+Dsh$<;181T@oa4Q#_TJUR$REZ-NByG|6Q)M3?B>|z%h z#Y+~4DqP-Z(NIGKyNN4ushCukl_eGZ9!#o?Ln^8iU2?ePvI(bDPW>xM^#s7ATEer3 U8&BCsm7apSrdldS)pelq4+=126951J delta 5521 zcmeHLUu+ab9NuZ~>_6%CO4C1A#VfXj!qM#R?cUy=8Yv2eD9{=RAPu;?w_6JBwY|1N z^nqf1GBE<9RFM!QB*Y-J<<$6~f_>rDkP3zvLD57bfmR<>42iQdySKAYFN5BV=^zgW5Jd8RH|mqKYy>edr6G1Q~<#W+reEhBY}imtIN%W;yVg+qf~J$j6fM+9Dtu%Q?AvYF z;BKuEdpDW`QCG=>){BMkTI)LS7HnBr(faG=Sv!@*COhyn{N$#GW0$vBD^uL?HeQ(r z>jTyG=BgCjeBxs2(8@mxz^&AQwy#QjhqhW>eN7ioSNKu~4=$%pc1(J}u~eTj=xJZg zSUvo&RN}$Pk51Jz%}FRddUIDIuJ3B*!VKdXX=9lhrdZoHl-SXXwn%pVRlI12o4Eq~ z7wz-X3vZU31h^;O%qb%Tq7ZZj7b&`sz59Gb7WL3jVrW2*r`Z4}zMk8tDl{qNP+wQ# zsotT)V2u618D1H^;RTC<497bkK@W(c2e53I6&!l;QJD|V_5h#z0ScT+wg5GCWu!Up z0fx!1+1!-cxBVvAEzc1MZ&_A}$a)%ylEm^3GQ=pGMzW5kL7|ANEiO=PM%abqXe51~ z!Xmxwb|8n=k3tG{qr&L|mu@pSIVz=*Xv9S=jqvKEk*sl=GbVb4xPxR(Leuu!Z!c?c zRxoc&9qhRdnkb=D+EpFbka@unxrhuWdN)+7amyAYYzv%i3#0w{VBP}7Fqx6DamW`W zj;25yZVPUNpY;{Bug9z%TZ+Vb;5Mw?Ss8S(R&`jbWwREZ=r0B;EE{1Fose4va=Vqu z&jz#rt`~RsdBWi*eB)vW$oMT6DF%K?H$BN)y7(_~=J=(mMvo7tlgli2!bcVbQtK9Y zi`lfwoYkeK6sPt=h#F#8g8h5j_V*Q5qoIjOM`z!Sob#kc*X-TsSVwllw9fQy1hPED zTVIuA0y#Xy*%&o@V@i%w>-oi=CCE;0?5VkTc5=)aUV#(8EnX%gcJ7L4VK&sKbm{}K za46Z^I~YUMzZ-vP$nY1+z>Ydk{KtIrW$-O+SMTS81(Z|SN)oYCVI;DwhMmen3UMQh zqB>7Z#X?b68`7nzc+zHwE~FBt!fi6gT25ub2sNn8Y1EA}&l0D?J#|hcPKA-k@x-Z2 z#IcgBg`LO8BgCmln}OP?HVsX?)|x5DMFb5y74FJO$YCe?uX^?e3l~z%r@2fiB^*^n z-cgEfDMikRGr_$H0Ezcrn!zYO^9R~gJhcJ zIMXCZrrC)z%_fp*PR*WaKAttxjN?o*nU!hkb7q<+ai*D@Bhzfpm1*YSOtTkfn%{F} znsXVM<`T{{Xhm?QLBDjSIZrapA2`#Ly@N9i>Vh-P*f4y#g9DdHsCf^EnvRvkkcJr? zYEakmFQ;ZPq{rG{cNr309vnl8XBpCATqUaEHKT%53S>n&bFItSqdch`ahe}0WeoSE zax}Orhc^58qciz{Dot2_cPvfh1$?NQQ|gJQt;kAF&;Q`~5tc|gIT2(hCkt80i6A>U z*@z@38AuBoAh$JV1(#gq!R&uftNlrE*$%!C4IT2(hCxYzcM39}Fte#eKvfIq$ zv|Ats!P?2mYK*I-j6{tr3r#zk%>8=@U48c!dK(Ab*FS&^v`KXgk)nW38K{WPih>j- zvCpvVQ+EXo1qQE}sn1kRX6h68h|4|=J7;umAhJG7a>m$M27EYGo1HU$uKJXzrE*3N zSvv~XT?$vw3Fbeq@KU$J;hC$IKpj2o0X6W()hgtAsQd+Tmp{|xe26JDLrjy%Q}xt$ zBTLBns%nV1gn~#Uj3z2g$8cYA&W6T_e6x>-b zBvDjIwlAt;EyWp`ikl8LV!5%bU{L2{L6+1AwNo041^4-MAy@&=O|JmAVCjtDo5JE7 zMj(B%o73TKD%+&CjjoSM&A From 8f9f0831c6d6a6c366829a53c422f0a0f7795d10 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Fri, 18 Mar 2022 11:23:57 +0400 Subject: [PATCH 12/13] #9 -- add config parameter --- data/db.mv.db | Bin 69632 -> 57344 bytes src/main/java/ru/ulstu/user/UserService.java | 4 +++- src/main/resources/application.properties | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/data/db.mv.db b/data/db.mv.db index 60c2a02c59086ff5d21a88e1721ec0fa4c810a01..52ce82b99f5670716827ca5ffb5182b47bb39a90 100644 GIT binary patch delta 3694 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 diff --git a/src/main/java/ru/ulstu/user/UserService.java b/src/main/java/ru/ulstu/user/UserService.java index 752f234..c8c9f43 100644 --- a/src/main/java/ru/ulstu/user/UserService.java +++ b/src/main/java/ru/ulstu/user/UserService.java @@ -2,6 +2,7 @@ package ru.ulstu.user; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; @@ -24,6 +25,8 @@ public class UserService implements UserDetailsService { private final PasswordEncoder passwordEncoder; private final UserRepository userRepository; private final UserRoleRepository userRoleRepository; + @Value("${admin-password}") + private String adminPassword; public UserService(PasswordEncoder passwordEncoder, UserRepository userRepository, @@ -63,7 +66,6 @@ public class UserService implements UserDetailsService { public void initDefaultAdmin() { String adminLogin = "admin"; - String adminPassword = "adminadmin"; if (getUserByLogin(adminLogin) == null) { UserRole adminRole = userRoleRepository.save(new UserRole(UserRoleConstants.ADMIN)); createUser(new User(adminLogin, adminPassword, Set.of(adminRole))); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 89e854d..be8bc18 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,6 +3,7 @@ # You may use, distribute and modify this code, please write to: romanov73@gmail.com. # # +admin-password=admin spring.main.banner-mode=off logging.level.tech.athene=DEBUG server.port=8080 From beb5fd2e15580feb70e2494a8318f8c563c69d58 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Fri, 18 Mar 2022 12:14:55 +0400 Subject: [PATCH 13/13] fix image upload --- data/db.mv.db | Bin 57344 -> 0 bytes src/main/java/ru/ulstu/news/NewsService.java | 9 ++++++--- src/main/resources/templates/editNews.html | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) delete mode 100644 data/db.mv.db diff --git a/data/db.mv.db b/data/db.mv.db deleted file mode 100644 index 52ce82b99f5670716827ca5ffb5182b47bb39a90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57344 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
    ;B14wd!qz4jx zlH87;f+UyW|K}3?zZCvn6aNn<8~A^wtZ3LCS$d7}|Nb8m C(Z99; diff --git a/src/main/java/ru/ulstu/news/NewsService.java b/src/main/java/ru/ulstu/news/NewsService.java index b108a3a..8c3d016 100644 --- a/src/main/java/ru/ulstu/news/NewsService.java +++ b/src/main/java/ru/ulstu/news/NewsService.java @@ -39,15 +39,18 @@ public class NewsService { public void save(News news) throws IOException { String fileName = System.currentTimeMillis() + ""; - news.setImageFileName(fileName); + if (!news.getImageFile().isEmpty()) { + news.setImageFileName(fileName); + FileUtil.saveFile(FileSystemStorageService.UPLOAD_DIR, fileName, news.getImageFile()); + } else { + news.setImageFileName(news.getImageFileName().isEmpty() ? "logo.png" : news.getImageFileName()); + } if (news.getId() != null && (news.getId() != 0)) { newsRepository.save(news); } else { create(news); } - - FileUtil.saveFile(FileSystemStorageService.UPLOAD_DIR, fileName, news.getImageFile()); } public News getById(@NotNull Integer id) { diff --git a/src/main/resources/templates/editNews.html b/src/main/resources/templates/editNews.html index d448036..3a4eade 100644 --- a/src/main/resources/templates/editNews.html +++ b/src/main/resources/templates/editNews.html @@ -14,6 +14,7 @@ +