From 0c0dffc6af2b3eb99f416adaf0f1c4ac93b932bb Mon Sep 17 00:00:00 2001 From: Chantha Date: Tue, 19 May 2020 15:30:16 +0700 Subject: [PATCH] Register with BCrytEncoder --- ...rg_attoparser_attoparser_2_0_5_RELEASE.xml | 13 ++++ ...g_boot_starter_thymeleaf_2_3_0_RELEASE.xml | 13 ++++ ...ymeleaf_extras_java8time_3_0_4_RELEASE.xml | 13 ++++ ...org_thymeleaf_thymeleaf_3_0_11_RELEASE.xml | 13 ++++ ...eleaf_thymeleaf_spring5_3_0_11_RELEASE.xml | 13 ++++ ..._org_unbescape_unbescape_1_1_6_RELEASE.xml | 13 ++++ .idea/workspace.xml | 70 +++++++++++------- jdbc.iml | 6 ++ pom.xml | 8 +- .../com/chantha/jdbc/config/WebConfig.java | 13 +++- .../chantha/jdbc/controller/UserController.kt | 37 +++++++++ .../kotlin/com/chantha/jdbc/security/User.kt | 6 +- .../jdbc/security/UserDetailServiceImpl.kt | 2 + .../chantha/jdbc/security/UserPrincipal.kt | 2 +- src/main/resources/application.properties | 1 + src/main/resources/templates/register.html | 38 ++++++++++ target/classes/application.properties | 1 + .../com/chantha/jdbc/config/WebConfig.class | Bin 3736 -> 4415 bytes .../jdbc/controller/UserController.class | Bin 0 -> 2854 bytes .../com/chantha/jdbc/security/User.class | Bin 5629 -> 6362 bytes .../jdbc/security/UserDetailServiceImpl.class | Bin 2076 -> 2124 bytes .../chantha/jdbc/security/UserPrincipal.class | Bin 4020 -> 4073 bytes target/classes/templates/register.html | 38 ++++++++++ 23 files changed, 269 insertions(+), 31 deletions(-) create mode 100644 .idea/libraries/Maven__org_attoparser_attoparser_2_0_5_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_3_0_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_11_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_11_RELEASE.xml create mode 100644 .idea/libraries/Maven__org_unbescape_unbescape_1_1_6_RELEASE.xml create mode 100644 src/main/kotlin/com/chantha/jdbc/controller/UserController.kt create mode 100644 src/main/resources/templates/register.html create mode 100644 target/classes/com/chantha/jdbc/controller/UserController.class create mode 100644 target/classes/templates/register.html diff --git a/.idea/libraries/Maven__org_attoparser_attoparser_2_0_5_RELEASE.xml b/.idea/libraries/Maven__org_attoparser_attoparser_2_0_5_RELEASE.xml new file mode 100644 index 0000000..5bad7db --- /dev/null +++ b/.idea/libraries/Maven__org_attoparser_attoparser_2_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_3_0_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_3_0_RELEASE.xml new file mode 100644 index 0000000..268662c --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_3_0_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml b/.idea/libraries/Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml new file mode 100644 index 0000000..7b246ae --- /dev/null +++ b/.idea/libraries/Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_11_RELEASE.xml b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_11_RELEASE.xml new file mode 100644 index 0000000..7b72bab --- /dev/null +++ b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_3_0_11_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_11_RELEASE.xml b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_11_RELEASE.xml new file mode 100644 index 0000000..3370587 --- /dev/null +++ b/.idea/libraries/Maven__org_thymeleaf_thymeleaf_spring5_3_0_11_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_unbescape_unbescape_1_1_6_RELEASE.xml b/.idea/libraries/Maven__org_unbescape_unbescape_1_1_6_RELEASE.xml new file mode 100644 index 0000000..2334aa0 --- /dev/null +++ b/.idea/libraries/Maven__org_unbescape_unbescape_1_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index d14b2aa..aaad21d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,13 +2,27 @@ - - - - + + + + + + + + + + + + + + + + + + @@ -47,6 +62,7 @@ + @@ -96,7 +112,7 @@ - + 1589796661163 @@ -144,42 +160,42 @@ - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + @@ -200,13 +216,17 @@ + + + + - + - + \ No newline at end of file diff --git a/jdbc.iml b/jdbc.iml index 7999556..d39a43e 100644 --- a/jdbc.iml +++ b/jdbc.iml @@ -129,6 +129,12 @@ + + + + + + diff --git a/pom.xml b/pom.xml index b9b4b07..b8fbc16 100644 --- a/pom.xml +++ b/pom.xml @@ -38,6 +38,13 @@ postgresql 42.2.12 + + + org.springframework.boot + spring-boot-starter-thymeleaf + 2.3.0.RELEASE + + @@ -45,7 +52,6 @@ spring-boot-starter-security 2.3.0.RELEASE - org.jetbrains.kotlin kotlin-reflect diff --git a/src/main/kotlin/com/chantha/jdbc/config/WebConfig.java b/src/main/kotlin/com/chantha/jdbc/config/WebConfig.java index f3620df..e637a2f 100644 --- a/src/main/kotlin/com/chantha/jdbc/config/WebConfig.java +++ b/src/main/kotlin/com/chantha/jdbc/config/WebConfig.java @@ -1,6 +1,7 @@ package com.chantha.jdbc.config; import org.springframework.beans.factory.annotation.Autowired; +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; @@ -10,6 +11,8 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; @Configuration @@ -18,6 +21,8 @@ public class WebConfig extends WebSecurityConfigurerAdapter { private final UserDetailsService userDetailsService; + + @Autowired public WebConfig(UserDetailsService userDetailsService){ this.userDetailsService=userDetailsService; @@ -25,7 +30,7 @@ public class WebConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { - auth.userDetailsService(userDetailsService); + auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder()); } @Override @@ -33,10 +38,16 @@ public class WebConfig extends WebSecurityConfigurerAdapter { http.formLogin(); http.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")); http.authorizeRequests() + .antMatchers("/register").permitAll() .antMatchers("/**").hasAnyRole("ADMIN"); http.csrf().disable(); } + @Bean + public PasswordEncoder passwordEncoder(){ + return new BCryptPasswordEncoder(); + } + diff --git a/src/main/kotlin/com/chantha/jdbc/controller/UserController.kt b/src/main/kotlin/com/chantha/jdbc/controller/UserController.kt new file mode 100644 index 0000000..bbeb326 --- /dev/null +++ b/src/main/kotlin/com/chantha/jdbc/controller/UserController.kt @@ -0,0 +1,37 @@ +package com.chantha.jdbc.controller + +import com.chantha.jdbc.security.User +import com.chantha.jdbc.security.UserRepo +import com.sun.istack.NotNull +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder +import org.springframework.stereotype.Controller +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.ModelAttribute +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestParam + + +@Controller +class UserController @Autowired constructor(private val userRepo: UserRepo){ + + fun encoder():BCryptPasswordEncoder{ + return BCryptPasswordEncoder() + } + + + + + @GetMapping("/register") + fun register():String{ + return "register" + } + + @PostMapping("/register") + fun saveRegister(@NotNull @ModelAttribute("user") user:User?):String{ + user!!.password=encoder().encode(user.password) + user.roles="ROLES_${user.roles}" + userRepo.save(user) + return "register" + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/chantha/jdbc/security/User.kt b/src/main/kotlin/com/chantha/jdbc/security/User.kt index 5a1c2f7..af9b57d 100644 --- a/src/main/kotlin/com/chantha/jdbc/security/User.kt +++ b/src/main/kotlin/com/chantha/jdbc/security/User.kt @@ -8,14 +8,14 @@ import javax.persistence.* @Table(name = "tbUser") data class User( @Id - @GeneratedValue - var userId:Long , + @GeneratedValue(strategy = GenerationType.IDENTITY) + var userId:Long ? = 0 , @Column(nullable = false,unique = true) var userName:String, @Column(nullable = false,unique = true) var password:String, var roles:String, - var status:Int + var status:Int ?= 1 ) { diff --git a/src/main/kotlin/com/chantha/jdbc/security/UserDetailServiceImpl.kt b/src/main/kotlin/com/chantha/jdbc/security/UserDetailServiceImpl.kt index f466183..661b853 100644 --- a/src/main/kotlin/com/chantha/jdbc/security/UserDetailServiceImpl.kt +++ b/src/main/kotlin/com/chantha/jdbc/security/UserDetailServiceImpl.kt @@ -7,8 +7,10 @@ import org.springframework.stereotype.Service @Service class UserDetailServiceImpl @Autowired constructor(private val userRepo: UserRepo):UserDetailsService { + @Throws(Exception::class) override fun loadUserByUsername(p0: String?): UserDetails { val user=userRepo.findByUsername(p0!!) return UserPrincipal(user) } + } \ No newline at end of file diff --git a/src/main/kotlin/com/chantha/jdbc/security/UserPrincipal.kt b/src/main/kotlin/com/chantha/jdbc/security/UserPrincipal.kt index c7997dd..d3f3320 100644 --- a/src/main/kotlin/com/chantha/jdbc/security/UserPrincipal.kt +++ b/src/main/kotlin/com/chantha/jdbc/security/UserPrincipal.kt @@ -33,7 +33,7 @@ class UserPrincipal constructor(private val user: User):UserDetails{ } override fun getPassword(): String { - return "{noop}${user.password}" + return user.password } override fun isAccountNonExpired(): Boolean { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index ad18dc6..5a53e97 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,6 +5,7 @@ spring.jpa.hibernate.ddl-auto=update spring.jpa.open-in-view=true server.port=8081 +spring.thymeleaf.cache=true diff --git a/src/main/resources/templates/register.html b/src/main/resources/templates/register.html new file mode 100644 index 0000000..9d25551 --- /dev/null +++ b/src/main/resources/templates/register.html @@ -0,0 +1,38 @@ + + + + + + + + Document + + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+ + \ No newline at end of file diff --git a/target/classes/application.properties b/target/classes/application.properties index ad18dc6..5a53e97 100644 --- a/target/classes/application.properties +++ b/target/classes/application.properties @@ -5,6 +5,7 @@ spring.jpa.hibernate.ddl-auto=update spring.jpa.open-in-view=true server.port=8081 +spring.thymeleaf.cache=true diff --git a/target/classes/com/chantha/jdbc/config/WebConfig.class b/target/classes/com/chantha/jdbc/config/WebConfig.class index d6c31806c7bbea0b866a54ce4e1cc7bfd738fefa..aaba873fea325be8d181f49c24a4d811f0942de4 100644 GIT binary patch delta 1101 zcmaJ>*-{fh6g{1p(343EB5yDP7Jp9A@CKRy1*O4#i_>E1_(Me0U&m0w*~hO8ZFQ zEIK(JOFPT)MBpi60&|#W7`9#tpY>hySc_^yzYhx>ae+l71eUPOP`(`7h#9F^I$=!b z%w#&j;4;j3BALy_O^#;*DXeg$8P3SED;i&aaF~3B$@e%B&wH-3r4V&9UD9{}EXccb5&R z)duIXIWsn&+Y!7`)m^J`b0wJ@Or>^0?zb#oM{fe4yOP5rPbJ?6KNOszXbcYe0eWy3 zEZFuQj%|t@sHeS@YCtHJa4y0$P*lBNjQ|=cB3zM`;WYV9Mgee!RtbqTkyVjzMvJW# zwzWKM!FO;Jpact03vkZ-meh;%4fN^)N8~(*avroINZf5jZie;);nrfJ86jKiHJnAN zseD@jB{Q_~J!ny{YZrO}ZkZ73M;wbP-qPs;%D$ky0FRyV+8H~nps-RRstTw+a#%k& zsWy>PGtH%iCen%?I^H-PFG5Ev&MUuvjKdD5&;jFL9dr;ElW&>;@@BfoGP2qpYNETS z-6DVgUgU5=m6BiV*Vyz2qwk_G3c4jCNdF5mEhpPU_B^dgT3(9FaRU=X5GI=h`voc3 Bw;2Ec delta 709 zcmZ{g%TE(g6vlsdI@8;Z(~5&yMXI(%#VJ}J2)>|zh@#?ys zvvK9pl`$dJA<_6)yLN5jKVm#HDUXf0x%Zs!-h009JLh};O?Kwz-_PHGe&%d8vOh^D zC7S~rv^m7#@aWeZNibj&XVB&-$HL3wniC05+6*zQ8A));Ce3*GblPTuGn%uS$;B6Q zhC1i}Hs1M3^Fubnd52AG)?5hVl;)ztB`!N$VcP#=P7h|NXs$Y3 zsIf3#syuu8U}0VnD|w#gro%1jn%jye{_E7N|I6yjDy-4*sY#)o;f}*y8k&0!_nB4X z{JP4uUd7+4Ry}E%t;ebNs@W-BgTf7cNfwhl!xo8K1x;Yc0^3_cdBsl{i-HWg|L=svc_w#@Wk-s cG$=-M3ft}zyifL+Y*%oaGNV#IB=H97AB-weasU7T diff --git a/target/classes/com/chantha/jdbc/controller/UserController.class b/target/classes/com/chantha/jdbc/controller/UserController.class new file mode 100644 index 0000000000000000000000000000000000000000..1371a68a54d46ef7a252203b4be29fce67ab5595 GIT binary patch literal 2854 zcmb7F-E$LF6#v~MP10>BOMte3Kq(c{2D+sd1%pVxpvCmV6auv>ZZ?-@o9%AcyGiXE zufFPk;FFI!qXlKg>G0x=f0X07yW1o{ggTS#J?GqW&;6ax`}aS8{0U$Z+YFsS_dwflm*Gfg%D#-MKM4PCQzdqZ0;ZF0j)Aj*)FsESyHoQVt>mxT^o(Rz zbRo!oc`mR*2G9FOHn~@Fb<-A_ZrhHhd!|G5lH)DaEsL~nb;S5TZc3n=A%4TOP46Z{ zG&536p$91i3Jx*EyoxCpF69p%Q3928`GzS2#c+&*(TeV>Cxb~ElN}?p%}ZLzw99S2 zYInG|sMl)2v95-0)j31AwtqtsM;KBRl^Gce zsEo|iSS@UsktD_$P8$_&ROh~}xm*ZplA^4X1rc@%!^QU7gD%gt;R!2KR{sP(kinTG zcSXxxhU4uP+VnrfM=}i882Vdb2==GzrbRO$fsYmBWIx3V%lWz0M@f7_G?g{C%M6!0 z8GZv>Xe*b(r?@4}O;JiI9|gzaB88bC8M89aPH=k)x1}(LJ0v7mLd}H$?_CngI2L%# zVHkc#%SbJ{I*-L}DwidOp|_Wd)K6fACW!1!h70XJhT(7T!cde#0joXu9QPOo-vNor zo|5`*7`c%mL+9=+ah;~=W8Lr^cc*>oOw~PS+jMz3mqeZt>lfFGE?)s^u4Y-K@I_E8 z>k48rzen<6BQA1JFYBI8AR}9iD7{QfepF&hJ`2gxE5oWJDqmsvZtv*@B{C3EBI@2# zg?>JrB%WlFReP04lTG#y>^+@`jI-&($wWG?Movb?qc4AqN7UHeq}oMXe7=vU1X0QP z{=3K2Zb?ljNv0|%V*_lwXTHDC8=QOi^81)POV_;oDV~ymCKw^cbjO+2oC^ng$YSyZ zrqIaA+j=s`svZ@`42?pD!+F!@OZBZ1ckju8#*ofChHe#g*OYuHJXNUMp1H*r?1m{! zl25gsM1~XLZn4AOp;b9n=^Y6z4ZW({OzbNLhhM+0vzkh&t~ll9COwzRs#A9je%rJ- z&QZI>Wcrbo-9uE2Xd1gD-y&{;R*E%}FQBYFL+{T-M_|)8?#qwDAvzW4;4oC;YT<5@ zRthXxj{3GP6DMs&(|xa-In`z+8k%`Rs=ajJDE*JEg9#je&2&Eo2!@3D1Hq2adMCT~ z7vj$`G`fr7>@G(3KwoVwedRf>?&5m(1#;xZjr7f3Ow-OBExVZC#b=|xVmbRe?nm$- zfER^J2Fc6$1dUJWaoUg6pnREd9YdJKc^`IPaCHcqK;Q(51bW|rlmFp>Ae&Up45y@m zpi>@6dZ@nf9ucSMU#EW;6%Q>m@9}^TNOxyRMY^kI(`(Q1<>)hfHJbem%fFDUm7O?c zLuMzyr#A7aex?I_GK&vMN8X%}SY*<|Tk}Ll(D1*O@699PyNLgqzK_-sUBEZ~Pe*B= qGZs(=Cn+BLIom*G9ft%|0aG9^uqg0AATF>eaKsn(lj{OSf$F~n{p`5_ literal 0 HcmV?d00001 diff --git a/target/classes/com/chantha/jdbc/security/User.class b/target/classes/com/chantha/jdbc/security/User.class index 6721d646ee80dae1747df63fa32d7d6f25e6ba76..ac5dfed646bf351d36848a191f6b0a0e3d49f40d 100644 GIT binary patch literal 6362 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 I*2X*k2NCvyV*mgE diff --git a/target/classes/com/chantha/jdbc/security/UserDetailServiceImpl.class b/target/classes/com/chantha/jdbc/security/UserDetailServiceImpl.class index 6f6a9d1460ff1a7e545bdfd2e08e93fc0ab2126c..f7af3aff9798af4d6e9bb0a3ffb84671c868c803 100644 GIT binary patch delta 648 zcmX|-O;1xn6o#Ld-U67D2OhX#2Y1)P%YT}|h zw`y+Ox$y@WHEKXfj5`y=V9ehC10;J?&s&9tXEr`wPwS?^(WP{aEy2t772exjSTlF!kZ5^nva)TRfRn^ zz8a;MK9_^^D>7!LbGO=RIt=(3YcX<|BM}A}QjD5jbY-K~Sg*Azb%$a9jWr!flW|Eg zqA2+Hf(6^*m_J}Y4@{UFZ>^NSYZq0_PXrdcX-*oRQ&G}}F~I4MwZJPCarY%_|99|3 zTLjA^Ekr6^1i3ERQ*2p~%znblt^FXh&7m(OEtYmjtxark^gGAj3&Q4x*k06MqF9dE zlg11hUy_z9qmiCRH;WRb!~yXUZb=l9s9XG!97joV zK!RmCK_z&kkY-BoMt4z08oGGSJF(47c8fFF+-JNGQnNa8%(Rfa(@5zv*tR@>Pe2^= z8H(G|G{C(0eOja8KW$7xixC8;u3Mrkf{ arHreG$ZD=?Vw$*SN)y&x(?m5z&HO(!rCf0U delta 605 zcmX|-%T5$Q6o$X*Zn}q=?y(&%;;m=oB188mqIf~PJ0gR~!UYML^%xf>5K801#U#e9 zMpJR;LrBzsm>72^#-*>|-X~B`HDIdh-2PMN|Eqq)Z{z6upY1QeG)sy}^U6s!GEbR# z^}G;K?!{rB`Kd;#`xS*p57t+oEUk4EZhc}oq>uh06$TW;_F{0av$h&=z|1-eg@YU_ zF~ni>!fB|ZX4{!6RjCz8IHs5}zuo@V568*@BMR@a?yM_ni*|@I3O2Qs8FHudd*m#WNInqrSr!Ii7 zN%Ms0Xi4mgFNt4}6DUbS3GT@0QPPDJsx)@hHf4|{iL=VdEl#JKOsCmL;ti=exd=PW zm)BVVgFC%@tX*R47bq45w2ddk|EIMYc4;FCq#F*@`gU7~H^;gU4rYcky>2F->rLg0*<7};$H58YIkw^?L+gKK8>bok z$MeO3j9bbwn6d7Z1A!t(0VO$Nb@fd4WkIWFPK z!kj&6uqm0~Z`ic_#&@t8`I{$MMJ9u#z%!yY5WuXg1vhz9ly!m81Nh^0IG+%HOM8YH zik3bPQFM`{sJf5PwCZk;FCtpUsbimEADu_Ij$vOFwr?Ij^EK5?Oj8WNJY=K5_caPe zP@$4TG9Kw*5JQwQl+jPx>W*EMEfeWGMii0JK-9h_K-4Sqv(%$_H)yTVHQt^TEyJg% z8dbVbq5Cz5Dy(9Vv+HA={}*F>Qw*;OhNu2A)*$m2W4y_zn(SG3vJDgDzVdND{fI&9 z#zfnN_qZB=himb~5~4La(@t=0nS~H4@@pu%tx5%3d9Pf2PG1W{gccJoC>nT*mkYu0 zUgpkGnxnq!Xu*v%%oJ|w_ZDuiW_MD!i+gm6`)M!%i3e%43JeK66o?3H5ttCL1s(}J T78ui;vVf;I;{u}suE3K&6(W** delta 839 zcma))OHUI~6vuyeT4rin9_^xOLBNH^+OknhTp3GZ8tOMNUAi!_l>*m-TI%@3H$Fyr z_{5bPO(bA3n(zVq3?^>e_#rf&+g2E&3zC_8UibXwf9KqvgKLAGUw?nz01op;vETcy z23E2oc2^*Mpb+IOV`2KKcpLUWXp&JAXzz!ePAKf!Sfw&v4>28Os#Ut+C7fyHdUH-b zbcL&7E^}@5n=@;vdGA#Cy;|^Mk$q~>I}#aIOI|5b?SCd;w%EmUu{Mfs=o!HwEdIRr zE0S^-+ZE`PT$y20kz8K-l-O8ijlKrs!DXD_TY`aik_@mQYX??$PO(KuvLxwftB*63 zBvMQ;DlEf1B#~i;TFi4Fz?IS#V7CttY6E=IrMbE(aHtKlf<}>_vd2fUHf6{^Y|A(< z*2w7n!ZG*cI=T4y2Kknzi{dpnAfZh?E;mn?Hdl;!~si^Mb~ f%_B`xlhV{Rj^?q((@Zs;2~Dl(%xJ2bvgXMjBp7~n diff --git a/target/classes/templates/register.html b/target/classes/templates/register.html new file mode 100644 index 0000000..9d25551 --- /dev/null +++ b/target/classes/templates/register.html @@ -0,0 +1,38 @@ + + + + + + + + Document + + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+ + \ No newline at end of file