luchob / softuni-feb2023 Goto Github PK
View Code? Open in Web Editor NEWThe result from the Spring Advanced course, feb-march-2023
The result from the Spring Advanced course, feb-march-2023
Здравейте,
Извинявам се, че Ви притеснявам, но когато се опитвам да логна потребител, нищо не се случва, също при подаването на грешни данни ни ми показва грешката за потребител или парола. Ще се радвам ако имате време да погледнете къде съм сбъркал. Благодаря Ви предварително, хубав и усмихнат ден!
Здравейте,
Бих желал да Ви помоля за малко помощ,
имам няколко проблема и към момента не мога да ги разреша.
При отиване на ендпойт на профил, ме редиректва към логин,
разрешил съм го за всички потребители, преди да вкарам принципал, си
работеше, но след това започна да редиректва.
Също когато подам две различни пароли на pass и repass при регистрация
не запазва данните в базата, но не дава и ерър, също така и при логин нито ми показва ерърите, нито че
потребителя вече съществува, или че има грешен потребител или парола.
При addbook в html имам поле option и искам да го направя да ми показва авторите от репозиторито, опитвам се да
го направя с th.each, но не ми се получава, явно не го правя праравилно, знам че трябва да направя лист с
findAllAuthors и да го покажа в options на html, но нещо не успявам да го направя.
Благодаря Ви изключително много. Пожелавам Ви прекрасен и усмихнат ден !
Днес успях да изгледам до края лекцията от понеделник. Понеже не съм минавала през модул JS исках да попитам, идеята ми е в моя проект да направя страница за админа, в нея да реждам всички продукти и всички поръчки, като продуктите да могат да се трият и редактират. Та това нещо как може да стане с JS да се вземат данните от базата а не от друг localhost. И проблем ли ще е ако е по този начин а не с Java? Дано да съм задала правилно въпроса си
А проблема с който се сблъсквам е че при products/add в web ми зарежда всички полета но ми дава грешка 404 в Network че не ми намира style и css файловете, мисля че някъде греша във securityConfiguration но не успях да се справя
https://github.com/ViliIlieva/MyKnitShop
and().
// configure login with HTML form
formLogin().
loginPage("/users/login").
// the names of the user name, password input fields in the custom login form
usernameParameter("username").
passwordParameter("password").
// where do we go after login
defaultSuccessUrl("/home").//use true argument if you always want to go there, otherwise go to previous page
failureForwardUrl("/users/login-error").
Това е кода за логване. Обаче незнам защо но при успешен вход ме праща на - > http://localhost:8080/main.js?continue
От къде може да идва проблема.
Thymeleaf Sec
org.thymeleaf.extras
thymeleaf-extras-springsecurity5
3.1.1.RELEASE
Както лектора така и аз ползвахме това дипендънси за таймлийф. Но когато написах sec:authorize="isAuthenticated()" § sec:authorize="isAnonymous()" § sec:authorize="hasRole('ADMIN'). нищо не работи като продължавам да виждам всички бутони на навигацията. Като изкопирах навигацията от pathFinder пак без резултат.
Търсих инфо из нета с различни дипендънси.... Е ето ме пак :–)
Здравей,
В лекцията от 13.03.2023 г. ни показа как да използваме Environment variables за да не публикуваме чувствителна информация в GitHub като пароли, потребителски имена и т.н., за което съм ти много благодарен, тъй като никой до момента не ни беше показал тази възможност. Мисля, че ще е добре ако остане малко време на следващата лекция да се допълни информацията, като се обърне внимание на една особеност, която може да обезсмисли това действие.
Тъй като ми стана интересно къде се съхранява конфигурацията на Environment variables, открих следната информация на сайта на JetBrains:
Всъщност за всеки проект информацията се съхранява в диркеторията на проекта в поддиректория .idea във файл workspace.xml.
Тази поддиректория никога не трябва да се къмитва, т.е. трябва да се внимава и винаги да се добавя във файл .gitignore на всеки проект.
Здравей Лъчо,
Имам технически проблем:
Зареждам проект с име "test" в който имам база с няколко ентитита, като таблици.
Проблемът е следния:
Ако директорията на проекта е например: Е:\SoftUni\All Projects\test -> ми създава базата, но без таблиците в проекта.
Но ако директорията е Е:\SoftUni\Projects\test -> създава успешно всичко и установих, че проблема е в спейса на някоя от папките в пътя.
До този момент нямах такъв проблем и всичко работеше добре.
Може ли малко насока какво точно да търся за да го оправя и да не се чупи, когато има такова име в пътя, понеже всички проекти са ми в подобни папки.
Благодаря предварително!
Поздрави,
Росен
Здравей Лъчо,
имам нужда от малко помощ или насоки.
имам два проблема със секюритито на приложението:
https://github.com/cUserd/finalProject_softUni_Model3d
тук е репото ако намериш време да погледнеш, Благодаря!
Привет, вече леко отчаяна и объркана в кода си. Направих регистрацията и добавянето на нов юзър в репото като се регистрира. Обаче сега проблема ми е че паролата не се енкодва. Направих в конфиг папката трите важни неща за секюрити. Честно копирах от твоя код копирах initServise в моят userServiseImpl с надеждата да ми се кодира паролата. Обаче възникна друг проблем с който не знам как да се оправя Could not resolve placeholder 'app.default.password' in value "${app.default.password}" това от една страна и Error creating bean with name 'userServiceImpl' defined in file [C:\myProject\demo\target\classes\com\example\demo\service\impl\UserServiceImpl.class]: Unexpected exception during bean creation.
Сега в мен възниква двулменето това секюрити само за логване или и за регистриране трябва. Първоначално разбрах, че при логване трябва, сега се чудя с добавянето на ролите още при регистриране и енкодването трябва ли или не и как да го направя? Също се чудя и как трябва да направя ролите да се сменят когато се извърши някакво действие по сайта . Например искам като се отвори страницата в нав бара да пише гост, но като се регистрира вече да е купувач, като иде на бутон създай продукт да стане създател. Това наистина незнам къде в кода трябва да го напиша. Почват да изникват някакви стари спомени от курса по js, но съм много объркана.
С уважение М.
https://github.com/MariaBonkova/3D-printing-project/tree/master
Здравей Лъчо,
Искам да попитам нещо за Login, което ме мъчи от известно време.
Тъй като Spring Security извършва за нас @PostMapping за Login и не го пишем никъде ме притеснява следното:
Примерно имаме:
UserLoginDto {
@NotBlank
@Size(min = 5, max = 20)
private String username;
@NotBlank
@Size(min = 8, max = 30)
private String password;
гетъри и сетъри
}
До този момент правихме Post-Redirect-Get и ако данните нещо сгафят с @Valid проверявахме за error-и и връщахме на същата форма със съответната грешка, не допускахме заявка до базата, запазвахме евентуално username във формата и тн.
Не мога да си обясня това нещо как се случва със Security.
Има ли как да стане по подобен начин, или вече изцяло тази валидация става на ниво клиент? И ако да, в случай на заобикаляне на клиента, как се предпазваме, ако изобщо има от какво в тази ситуация? Нещо изпускам по веригата, но не мога да се ориентирам кое точно.
Благодаря!
Поздрави,
Росен
Здравей Лъчо!
Имам идея за моя проект, но не знам дали е ок за самата защита, възможно ли е да те питам за насоки, когато имаш време. Тук може ли да разискваме теми свързани с проектите или към кого да се обърна за насоки?
Благодаря предварително,
Поздрави и успех с нас :) !
Здравей Лъчо,
Нуждая се от малко помощ за проекта ми, който разработвам. Та проблема е че когато събмитна Create Car Offer или Inquiry абсолютно нишо не се популира в базата данни, никакви ерори не ми излизат също и не мога да намеря каква точно е причината. С Login има проблем също. Всичко изглежда наред в структурата и кода на проекта и според мен не би следвало да има проблеми, но явно нещо аз пропускам предполагам.
Ще съм благодарен ако го погледнеш и ми дадеш някакви насоки.
Поздрави,
Ангел
Здрасти, Лъчо!
От доста дни се мъча с правенето на заявки от фронтенда ми на реакт (localhost:3000) към rest api-то ми (localhost:8080). Всичко е наред с GET
и POST
заявките, но стигне ли се до PUT
, PATCH
, DELETE
, хвърля 403 CORS Error "Access to fetch at 'http://localhost:8080/admins/promote?userId=2' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled."
През Postman всичко е наред с всеки вид заявка, но в бразузъра - гърми винаги при всякаква конфигурация.
Опитах с:
@CrossOrigin
(origins="http://localhost:3000").cors().and()
в SecurityFilterChain бийнhttps://pastebin.pl/view/7c6bed22 -> SecurityConfig
https://pastebin.pl/view/a99856db -> AdminController
Моля те за помощ с CORS. Честно казано, много ме отчайва вече.
Поздрави.
Привет, започнах да пиша логиката по проекта си, но още в началото започват гърмежите, с който не мога да се справя. Опитвам се да направя логиката за регистриране. В applicationBeanConfiguration се опитах да сложа валидацията от лекциите където са спринг секюрити. Проблема е , че като рънна проекта зарежда моят проект, но като дам на home и ми изкарва логина са спринг секюрити, иначе регистрация и вход ми зарежда мойте страници. И допълнително в конзолата ми изписва Using generated security password: 00e87e41-daa7-48ca-823e-bd69eb4cd2b1
This generated password is for development use only. Your security configuration must be updated before running your application in production.
Но въпреки това върви за сега.
Ще бъда благодарна, ако може жокер как да го оправя.
Мария
https://github.com/MariaBonkova/3D-printing-project/tree/master
Привет, Лъчо!
Мъча го този проблем от доста време и не мога да разбера защо не иска да ми регистрира потребител. Нито някаква грешка хвърля, нищо. Просто като стигнем до регистрирането на потребителя и приложението овисва?? Мисля си, че може да има нещо общо с енкодера на пароли, но не съм сигурен. Честно казано вече нямам идея. :(
Ще съм благодарен ако успееш да му хвърлиш едно око и да дадеш някакъв съвет. :)
Линк към репо: https://github.com/Paytakov/mobilele-app
Хубав ден и поздрави!
Привет!
Аз съм с проекта, чийто снимки до момента ми играят в контра.
Благодарение на вас от последната лекция успях да запазя нещо в базата, но не точно това е желания резултат.
Аз мисля че трябва да приема някакъв Set за да се запази в базата множество снимки за един продукт.
И точно там удрям на камък, както после и при визуализацията.
Дали това е по- добре всичко това да го направя на отделен controller & service.
Може ли да хвърлите едно око над проекта и да споделите мнение. Благодаря! :-)
https://github.com/IvailoB/SoftUni-Java-WEB/tree/main/CarWeb/CarWeb
https://github.com/ViliIlieva/MyKnitShop
правя всичко като от миналогодишната ти лекция, когато регистрирам юзър не иска директно да го логне като на лекцията
Лъчо здравей,
имам два проблема които не успявам да разреша и ще съм благодарен за малко съвети и помощ.
проблем 1 : в приложението ми искам да може да се качва снимка. качвам я записвам я в папката (вижда се) има си я в базата като стринг, но когато се мъча да я визуализирам с tymeleaf ми гърми. Доколкото четох и разбрах се използва
th:src="|data:image/jpeg;base64,+${model.image}|
обаче не ми я визуализира
проблем 2: в приложението ми искам да мога да качвам файл към базата отново като стринг . Тук още на ниво база не мога да го кача. Четох че трябва да е BLOB пробвах и различни варианти но базата не иска да го приеме. Също бих те помолил за съвет какво трябва да потърся и прочета за да мога да го сваля в един момент от някакъв бутон примерно download object
или стъпките са както съм го вкарал с input stream да го обърна с output stream.
тук е приложението ми ако намериш малко време да погледнеш.
https://github.com/cUserd/finalProject_softUni_Model3d/tree/master
Здравей, би ли ми помогнал къде греша -> https://github.com/lamenco/Window-Shopper изтегледет PVC9.rar
При вас интересептора работи а при мен не, дали може да ми кажете къде да погледна, единствено ми се променя e
"??fragment_language_en_US??" и дори не знам защо не пише Language или Език.
И втория ми проблем, бихте ли ми казали къде греша при теста testDelete-> "/cart/deleteWindow/{id}", гледам внимателно клипа ви от миналото издрание и не разбирам защо ми излиза грешка ->
detached entity passed to persist: com.example.demo.models.entity.User
Благодаря!
Здрасти, Лъчо,
след като излекувахме "детските болести" по проектите си, виждам от чатовете ми с колеги, че има две теми, които доста ни мъчат и на които ми се иска, ако остане време, да ни помогнеш в някоя от следващите ни лекции:
Предварително благодаря!
не съм сигурен дали това е настройка на базата или не, но от workshopa последния път,
когато качваме снимките на cloudinary.
При мен се появяват в профила ми но не ги виждам в базата.
А когато се опитам да запазя в базата имам следната грешка ->
object references an unsaved transient instance - save the transient instance before flushing
.........
Та идеята ми е как от cloudinary се запазват нещата в базата. Може да съм пропуснал нещо.
Здравей,
Проекта който смятам да правя е за прогнози за ФОРЕКС и се казва Trading Forecasts. Прогнозите ще бъдат за валутните двойки евро/долар, евро/паунд, злато и индексите Dax, Dow Jones и Nasdaq които са в ентити Category което от своя страна се състои от енъм. Всяка една прогноза ще бъде или дълга позиция (long) или къса позиция (short) които са също енъми. Имам и енъми за UserRole и накрая когато се опитам да стартирам проекта си ми излиза грешка "The dependencies of some of the beans in the application context form a cycle:" и че трябва да направя това "Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true."
Четох в Baeldung, че това се получава, защото имам много навързани bean-ове и когато имаме Constructor injection, Spring се чуди при стартиране кое да инициализира първо :) Пробвах с това "spring.main.allow-circular-references=true" което сложих в application.properties, но проблема си оставаше и затова когато добавих @lazy в Конструктора на ForecastServiceImpl и приложението ми тръгна :)
Вчера те питах в началото на лекцията дали това би било проблем за моето приложение и ти ми каза да напиша issue тук за да ми помогнеш :)
Благодаря ти предварително за отделеното време!
Github URL: https://github.com/GeorgiPetrov4400/Trading-Forecasts/tree/main/TradingForecasts/TradingForecasts
В следния мапинг от първата лекция:
@GetMapping("/{id}")
public ResponseEntity getBookById(@PathVariable("id") Long id) {
Optional book = this.bookService.getBookById(id);
return book
.map(ResponseEntity::ok)
.orElseGet(() -> ResponseEntity.notFound().build());
}
Когато връщаме ResponseEntity::ok, това ли е метода, в който ще се осъществи проверка дали дадената книга съществува или не. Разбирам какво прави цялото нещо абстрактно, но в конкретика не съм точно сигурен, къде точно се разбира книгата дали е Null или не.
Здравей имам следният проблем с изтеглен темплейт съм и ми работят както трябва някой страници но някой се чупят
знам че е някъде в пътищата на скриптовете, както и че една колежка имаше същият проблем, но вече няколко дни съм забил и оправия няма :( Ако може някакви напътствия ще съм благодарен
Благодаря за отделеното време, някой неща се оправиха обаче логина все така ме хвърля в failureForwardUrl при положение, че юзера го има в базата виждам и през f12 че се пращат правилните username и password. от базата си вадя правилният юзер с findByEmail но какво се случва в секюрити не ми е много ясно :(
просто ме препраща всеедно е грешен потребител. във логин формата всичко е както трябва поне според мен.
иначе за папка libs реших да използвам:
@bean
public WebSecurityCustomizer webSecurityCustomizer(){
return web -> web.ignoring()
.requestMatchers("/css/","/js/","/images/","/libs/");
}
Originally posted by @cUserd in #27 (comment)
Здравей, интересно ми е относно начина който ни показа сетването на админа и модератора на лекцията за секюритито, дали може да си сетнем примерно така два админа и три модератора примерно и как трябва да стане?
Благодаря предварително!
Привет :)
Имплементирам cloudinary в моят проект и имам един проблем
При качване и триене на снимка излиза тази грешка PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Успях да кача SSL сертификата, но днес при стартиране отново излезе това. Има ли начин веднъж щом се качи този сертификат в “%JAVA_HOME%/jdk-18.0.2.1/lib/security/cacerts, повече да не се налага да го правя ?
Използвам тази команда:
keytool -importcert -file C:\Projects_.cloudinary.crt –alias dinardap –keystore C:\Program Files\Java\jdk-18.0.2.1\lib\security\cacerts
Благодаря !
Здравей Лъчо,
Изпращам линк до репото на проекта си: https://github.com/thrako/receptaria
Моля за съвет как да си реформатирам кода, така че при няколко динамично добавени съставки от формата за добавяне на рецепта в контролера в @PostMapping("/recipes/add")
да получавам готово намапено RecipeDto
, в което да се съдържа List<IngredientDto>
, а ако това не е възможно - някакъв по-елегантен начин, чрез който да постигна същия резултат.
Имам подобен проблем със снимките като описания по-горе относно съставките.
Освен това, в допълнение, при добавяне на няколко снимки, бих искал потребителят да има възможност да избере, коя от тях е "primary" и съответно именно тази снимка да се показва като thumbnail в списъка с всички рецепти. Сложих radio бутони във формата, но информацията, която получавам от тях в multipartRequest.getParameterMap()
не е достатъчна, за да идентифицирам снимката.
Моля да се абстрахираш от това, че стилът на кода ми се разминава на места. Още експериментирам с различни стилове, планирам по-нататък да мина и да уеднаквя стиловете наведнъж.
Благодаря за времето ти!
Поздрави,
Траян
https://github.com/ViliIlieva/MyKnitShop.git
Каква може да е причината да не взема Id при този метод
опитах да редиректва и към "redirect:/product/edit/" + productId;
Метода се намира в ProductControler
@PatchMapping("/product/edit/{id}")
public String editProduct(@PathVariable("id") Long productId,
@Valid EditProductDTO editProductDTO,
BindingResult bindingResult,
RedirectAttributes redirectAttributes){
if(bindingResult.hasErrors()) {
redirectAttributes.addFlashAttribute("editProductDTO", editProductDTO);
redirectAttributes.addFlashAttribute(
"org.springframework.validation.BindingResult.editProductDTO", bindingResult);
return "redirect:/product/edit/{id}";
}
this.productService.editProduct(productId, editProductDTO);
return "redirect:/user/admin";
}
https://github.com/ViliIlieva/MyKnitShop
Да помоля да погледнеш във html shopping-card защо не ми засича ДТО-то.
Също искам да попитам в OrderControlera направих Гет и Пост заявка с идеята че когато изпълнявам products/order т.е. html order-details (когато клиент си потвърждава поръчката) очаквам пост заявка защото попълвам две полета с данни които идват с тази заявка, а в Network виждам че заявката всъщност е Get, това защото не ми е засякло ДТО-то и защото нямам th:field във htmla ли се получава.
Май доста объркано си зададох въпроса дано да съм успяла да обясня.
Благодаря предварително!
Здравей Лъчо,
Стигнах до работещо решение за DeleteMapping / deleteById(bookId), но не съм сигурен дали е правилно.
Стъпка 1:
Създаване на наш exception -> EntityNotFoundExceptionById
@ResponseStatus(HttpStatus.NOT_FOUND) ****(като тук се чудих дали да сложа NO_CONTENT)
public class EntityNotFoundExceptionById extends RuntimeException {
public EntityNotFoundExceptionById(String message) {
super(message);
}
}
Стъпка 2:
Обработка на service ниво:
public void deleteById(Long bookId) { ****(тук опитах с try/catch, но нещо не се получи - но с тази проверка работи)
if (!this.bookRepository.existsById(bookId)) {
throw new EntityNotFoundExceptionById("Invalid id was provided");
}
this.bookRepository.deleteById(bookId);
}
На ниво контролер го оставих, както го написахме по време на лекцията.
@DeleteMapping("/{id}")
public ResponseEntity<BookDto> deleteBookById(@PathVariable("id") Long id) {
this.bookService.deleteById(id);
return ResponseEntity
.noContent()
.build();
}
Като допълнение прилагам и снимка на заявките в Постман :)
Здрасти, Лъчо, виждам, че качваш различните проекти, с които се упражняваме, в едно репо в github, които си работят, нищо че са независими и са в едно репо. Как се прави това през IDE-то? Убих се да търся и да чета
Здравей Лъчо,
Имам два въпроса и мисля че ща са доста лесни :)
Имплементирах си качването на снимка и файл за което много благодаря, но се чудя как бих могъл да вкарам multipart file
в init service или с други думи когато запали приложението да си направи нови готови модели за да не седи празен сайта. Как се задава от къде да вземе снимка статично(от папка) без да се ъплодва от форма.
в controllera имам pathvariable да кажем /detail/{id} и като се се зареди в браузера всички ресурси и фрагменти започват да се търсят от /detail вместо от стандартната локация static/.../ и доста се измъчих, но неможах да го докарам да ги търси от правилното място опитах с "../" , с абослютен път и още импровизирани варианти, но без успех.
Здравей Лъчо,
Срещам голям проблем с BindingResult, при регистриране изобщо не ми отчита валидациите. BindingResult винаги показва 0 errors.
https://github.com/msaeva/MMusic
Благодаря предварително!
Здрасти, Лъчо. Знам, че питането ми звучи абсурдно, но вече часове се боря и без резултат.
Правех си моя проект и му прилагах секюритито от последната лекция. В един момент видях, че не работи, както се очаква - нещо каквото и да правех, както го правиш ти в лекцията, не ми се криеха примерно бутоните, според ролята на потребителя. В един момент осъзнах, че съм на таймлийф-екстрас-секюрити5, вместо на 6, смених го и привидно тръгнаха нещата, но в един момент на localhost:8080 спря да ме пуска на индекс странцата, а започна да ми иска юзър и парола - този стандартния прозорец на секюрити. Реших да дропна базата и да я вдигна отначало, пре-импортнах всички депендънсита и тогава установих, че таблиците не се създават. В момента положението е такова, че дори ето това приложение, не вдига двете прости таблички в базата:
https://github.com/borisboev79/Proba
Всякаква помощ ще е добре дошла. Благодаря!
Здравейте, ако имате време може ли да погледнете проекта ми [https://github.com/ivadar/Vandi-gym-project], имам проблем след добавяне на спринг секюрити, не ми визуализира табовете за регистрация, логин и др., както аз искам и винаги ме препраща към логин независимо къде кликна. Home html-a въобще не се показва, все едно го няма.
Ще се радвам на отговор, благодаря!
Здрасти, предполагам, че пропускам пак нещо малко, но въпреки че съм направил всичко, както теб в лекцията, при грешни креденшъли ме ми изкарва червения надпис за грешка.
Пробвах да дебъгна, кодът въобще не стига до този метод в контролера, кактно и th:if="${bad_credentials}" не разпознава изобщо този атрибут.
https://github.com/borisboev79/CGM-Project.git
Мерси предварително!
Здравей Лъчо, съжaлявам че въпросите са 3, но когато имаш време ще се раздвам ако може да ми помогнеш, Имам проблем като пускам тестовете, че получавам грешка "java: illegal character: '\ufeff'" И " java: class, interface, enum, or record expected".
Втория ми проблем е, че не разбирам защо интересептора ми не работи. Не ми се сменя езика на навигацията.
Всичко ми е на UTF-8 и с BOM или без BOM нищо не се получава.
И третия ми проблем е, че се опитвам да сложа на всеки нов потребител роля USER Още на регистрация с кода
" List userRoles = new ArrayList<>();
if(userRegisterDto.getUsername().equals("lambo")){
userRoles.add(new UserRole().setUserRole(UserRoleEnum.ADMIN));
}else{
userRoles.add(new UserRole().setUserRole(UserRoleEnum.USER));
}
newUser.setUserRole(userRoles);"
но ми дава грешка.
Ще оставя линк към проекта -> https://github.com/lamenco/Window-Shopper , изтегли PVC7.rar
Нещо още не мога да се ориентирам добре как се качва в репозиторито.
Благодаря!
Здравей, като направих нов файл в messages.properties , и всичко вече излиза на български, но нищо не се променя като езика.
Единствено ако добавя classpath в " resourceBundleMessageSource.setBasename("classpath:i18n/messages");", започват да ми излизат пак думите с въпроси отпред и отзад, но тогава поне се сменят. Не знам гледах и рових къде ли не в интернет и не разбирам защо не ми се сменя.
Относно тестовете, не разбирам защо не може да ме допусне за заявки след като използвам
@beforeeach
void setUp() {
testUser = new User("admin", "Admin", "a@a", "123",
List.of(new UserRole().setUserRole(UserRoleEnum.USER),
new UserRole().setUserRole(UserRoleEnum.ADMIN)));
testOffer = new Window(111,125,new Model(ModelEnum.VIVAPLAST),new Colors(ColorsEnum.WHITE),
new Chambers(ChamberEnum.FIVE_CHAMBER), BigDecimal.valueOf(12),testUser);
}
Ако можете изтегледете файла PVC.rar и да погледнете заяките testLoginDelete() и testAddWindow()
https://github.com/lamenco/Window-Shopper
Съжалявам че ви занимавам толкова често.
Здравей, Лъчо!
В момента гледам първият Workshop от изданието на курса, започнал септември месец 2021 и там видях, че си направил cloudinary проект, които би ни бил полезен и за нашите проекти. Проблемът е в това, че не го намирам в github-a ти (не изключвам и нещо аз да не довиждам). Workshop-a се е провел на 05.11.2021.
Поздрави!
Здравей, Лъчо. От известно време имам проблем със сърч бара. Прегледах няколко пъти записа от миналогодишното издание на курса, но не се получава филтрацията. Когато филтрирам по някаква цена, излизат всички резултати.
https://github.com/KristiyanVasilev96/LaptopFinder
GH URL: https://github.com/luchob/softuni-feb2023
Problem: Хвърля следния ексепшън...
Привет, реших да направя темплейти на head, navbar and footer. Но когато ги риплейснат на index стрницата и ми я счупи по този начин по, който излиза. Пробвах варианти, но незнам от къде дойде това нещо. Ще съм благодарна за помоща ви!
https://github.com/MariaBonkova/3D-printing-project/tree/master
Здравей Лъчо,
Не съм сигурен, че ми разбра въпроса относно синхронизацията на validation constraints между backend и frontend по време на днешната лекция. Имах предвид следното: например в backend-а съм задал на полето password @Size(min = 5)
и подобно във frontend-а извеждам съобщение с JS, ако паролата е по-къса от 5 символа. По-късно обаче променям изискването в backend-а да е @Size(min = 8)
и пропускам да си ъпдейтна frontend-a. Получава се неприятна ситуация, потребителят въвежда парола, която според frontend-а е с допустима дължина, но backend-а не я допуска. За да не се случва това искам тези числа, regex-и и т.н. ("constraints") да ги залагам на едно единствено място, от което да си ги вземат и backend-a и frontend-а. По същия начин мисля да процедирам и със съобщенията, за да са идентични, независимо дали се генерират от frontend-а или от backend-а. Начините, по които съм открил, че може да се имплементира са: (1) script таг, в който подавам данните чрез Thymeleaf variable като тук хубавото е, че мога да подам Map; (2) hidden input field, но трябва да правя отделно поле за всеки constraint (или поне аз така си мисля); (3) REST Controller + Fetch заявка -> не съм сигурен, че е ОК да го ползвам за такива "служебни" данни, макар да не виждам друга очевидна причина защо би било грешно. Вероятно има и други начини, за които аз не се сещам. Та... въпросът ми е, кой е препоръчителният начин да го имплементирам?
Здравей Лъчо,
Не мога да намеря правилният път за разрешаването на някои неща в проекта. Голяма каша, не съм рефракторирал още за да добие приличен вид. Ще се радвам, ако можеш да ми дадеш някакви насоки, ако не може решение на следните неща:
Link : https://github.com/PlamenPeev/adorablePet
Би трябвало да имаш достъп, ако съм уцелил настройките.
Благодаря предварително!
Привет, Лъчо!
След пълна преинсталация на системата от format C:, в момента съм на гол Уиндоус 11, IntelliJ последна версия, Java SDK 17.06 директно от Оракъл и последните версии на MySQL сървър и J Connection - 8.0.32
Проблемът си стои, но установих къде се чупят нещата, като вероятно все още бих имал нужда от съдействие:
Ако нещо от горепрочетеното ти светва някаква лампа дали пропускам нещо съществено, пиши, моля! Иначе мерси за вчерашната лекция, беше топ! Може би защото сме си набори, тотално те разбирам като обясняваш и показваш.
Имам заявка с която взимам всички order от базата данни.
Като в клас Order имам
@manytomany(fetch = FetchType.EAGER)
private List orderedProducts = new ArrayList<> ();
@mantoone
private User client;
Как със Таймлийф мога да достъпя полето клиент и листа от продукти към всяка поръчка.
Направила съм си th:each="order : ${allOpenOrders}", но имам достъп само до базовите полета
https://github.com/ViliIlieva/MyKnitShop.git
Здравей отново, на мен май ми е най труден таймлийфа.
В OrderControler съм направила два метода за cart, гет и пач, с идеята че пач метода приема данни за юзъра които трябва да бъдат допълнени във вече създадения такъв.
Направих и страницата след потвърждаване на поръчката и тя е order-details като в контролера създадох метод и за нея,
ако самостоятелно заредя страницата localhost:8080/order/details/5 ми зарежда страницата и ми издърпва всички необходими данни.
Но не успявам от cart.html когато събмитна "Потвърди Поръчката" да ме прехвърли към localhost:8080/order/details/{id} уж в пач метода съм задала да презареди order-details
Да помоля да погледнеш
Здрасти Лъчо, пак съм аз :)
По време на лекцията, мисля ще не успях да си задам въпроса правилно относно UserEntity със Security.
Ситуацията е следната:
Създава се наш JpaUserDetailsService и се импплементира UserDetailsService по този начин:
@Service
public class JpaUserDetailsService implements UserDetailsService {
private final UserRepository userRepository;
@Autowired
public JpaUserDetailsService(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
var user = this.userRepository.findFirstByUsername(username);
return user.map(SecurityUser::new)
.orElseThrow(() -> new UsernameNotFoundException("Username not found " + username));
}
}
Също така се създава наш клас SecurityUser, който имплементира UserDetails по следния начин:
public class SecurityUser implements UserDetails {
private final UserEntity user;
public SecurityUser(UserEntity user) {
this.user = user;
}
@Override
public String getUsername() {
return this.user.getUsername();
}
@Override
public String getPassword() {
return this.user.getPassword();
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
//not implemented
return List.of(() -> "read");
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
И така вместо да подаваме отделните полета, да го направим с цялото ентити. Въпросът ми е дали по този начин да подадем цялото UserEntity е напълно грешно?
Или ако е много лоша практика да се инжектира по този начин, възможно ли е в метод "loadUserByUsername" да се трансформира ентитито в ДТО и след това в SecurityUser да подадем въпросното UserDto?
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
var user = this.userRepository.findFirstByUsername(username);
тук с мапър да го преобразувам в DTO и да го подам него на SecurityUser като private final UserDto userDto;
UserDto userDto = this.modelMapper.map(user, UserDto.class);
return userDto .map(SecurityUser::new)
.orElseThrow(() -> new UsernameNotFoundException("Username not found " + username));
}
Четох, че подобден подход се нарича adapter/decorator pattern, но може и да бъркам.
И като допълнение къде би било подходящо да се вкарат всички филдове от UserDetails -> isAccountNonExpired, isAccountNonLocked и тн. В UserEntity предполагам и да се пази true/fasle, като статус в базата или?
Благодаря предварително :)
Поздрави,
Росен
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.