fixes_ui #66

Merged
Seil0 merged 3 commits from fixes_ui into master 2020-06-13 11:03:21 +02:00
4 changed files with 196 additions and 195 deletions

View File

@ -1,17 +1,7 @@
package org.hso.ecommerce.app; package org.hso.ecommerce.app;
import org.hso.ecommerce.entities.user.User;
import org.hso.ecommerce.repos.user.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Optional;
/** /**
* TODO clean up this class * TODO clean up this class
@ -19,70 +9,13 @@ import java.util.Optional;
@Controller @Controller
public class RequestController { public class RequestController {
@Autowired @GetMapping("/intern/customerOrders/")
private final UserRepository userRepository = null; public String internCustomerOrder() {
return "intern/customerOrders/index";
static int notSoRandom = 0; }
@GetMapping("/login")
public String login() {
return "login";
}
@PostMapping("/login")
public String loginPost(
HttpServletRequest request,
HttpServletResponse response,
@RequestParam("username") String username,
@RequestParam("password") String password,
HttpSession session
) {
String gto = (String) session.getAttribute("afterLogin");
Optional<User> user = userRepository.findByEmail(username);
if (!user.isPresent()) {
request.setAttribute("error", "Email Adresse falsch.");
response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
return "login";
}
if (!user.get().validatePassword(password)) {
request.setAttribute("error", "Passwort falsch.");
response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
return "login";
}
if (!user.get().isActive) {
request.setAttribute("error", "User ist deaktiviert.");
response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
return "login";
}
session.setAttribute("userId", user.get().getId());
if (gto != null && gto.startsWith("/")) {
return "redirect:" + gto;
} else {
return "redirect:/";
}
}
@PostMapping("/logout")
public String logoutPost(HttpServletResponse response,
HttpSession session
) {
session.removeAttribute("userId");
return "redirect:/";
}
@GetMapping("/intern/customerOrders/")
public String internCustomerOrder() {
return "intern/customerOrders/index";
}
@GetMapping("/intern/customerOrders/{id}")
public String internCustomerOrdersId() {
return "intern/customerOrders/id";
}
@GetMapping("/intern/customerOrders/{id}")
public String internCustomerOrdersId() {
return "intern/customerOrders/id";
}
} }

View File

@ -1,8 +1,69 @@
package org.hso.ecommerce.controller; package org.hso.ecommerce.controller;
import java.util.Optional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.hso.ecommerce.entities.user.User;
import org.hso.ecommerce.repos.user.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller @Controller
//@RequestMapping("...") @RequestMapping("/")
public class LoginController { public class LoginController {
@Autowired
private final UserRepository userRepository = null;
@GetMapping("login")
public String login() {
return "login";
}
@PostMapping("login")
public String loginPost(HttpServletRequest request, HttpServletResponse response,
@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) {
String gto = (String) session.getAttribute("afterLogin");
Optional<User> user = userRepository.findByEmail(username);
if (!user.isPresent()) {
request.setAttribute("error", "Die Email Adresse falsch.");
Outdated
Review

Wäre "Die Email Adresse ist falsch." nicht besser?

Generell würde ich für Email und Passwort die gleiche Fehlermeldung zurück geben ("Die Email Adresse oder das Passwort ist falsch.").

Wäre "Die Email Adresse ist falsch." nicht besser? Generell würde ich für Email und Passwort die gleiche Fehlermeldung zurück geben ("Die Email Adresse oder das Passwort ist falsch.").
response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
return "login";
}
if (!user.get().validatePassword(password)) {
request.setAttribute("error", "Das Passwort ist falsch.");
Outdated
Review

Wäre “Das Passwort ist falsch.” nicht besser?

Wäre “Das Passwort ist falsch.” nicht besser?
response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
return "login";
}
if (!user.get().isActive) {
request.setAttribute("error", "Dieses Konto ist deaktiviert..");
Outdated
Review

Wäre “Dieses Konto ist deaktiviert.” nicht besser?

Wäre “Dieses Konto ist deaktiviert.” nicht besser?
response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
return "login";
}
session.setAttribute("userId", user.get().getId());
if (gto != null && gto.startsWith("/")) {
return "redirect:" + gto;
} else {
return "redirect:/";
}
}
@PostMapping("logout")
public String logoutPost(HttpServletResponse response, HttpSession session) {
session.removeAttribute("userId");
return "redirect:/";
}
} }

View File

@ -16,66 +16,67 @@ import javax.servlet.http.HttpSession;
import java.util.Optional; import java.util.Optional;
@Controller @Controller
public class RegisterController { public class RegisterController {
@Autowired @Autowired
private final UserRepository userRepository = null; private final UserRepository userRepository = null;
@PostMapping("/register") @PostMapping("/register")
public String registerPost( public String registerPost(HttpServletRequest request, HttpServletResponse response,
HttpServletRequest request, @RequestParam("username") String username, @RequestParam("password") String password,
HttpServletResponse response, @RequestParam("password2") String password2, @RequestParam("salutation") String salutation,
@RequestParam("username") String username, @RequestParam("name") String name, @RequestParam("address") String address,
@RequestParam("password") String password, @RequestParam("type") String type, // TODO store
@RequestParam("password2") String password2, @RequestParam("ad") String ad, // TODO store
@RequestParam("salutation") String salutation, HttpSession session) {
@RequestParam("name") String name, Optional<User> user = userRepository.findByEmail(username);
@RequestParam("address") String address, if (user.isPresent()) {
@RequestParam("type") String type, request.setAttribute("error", "Die Email Adresse existiert bereits.");
Outdated
Review

Auch hier "Die Email Adresse existiert bereits." ?

Auch hier "Die Email Adresse existiert bereits." ?
@RequestParam("ad") String ad, response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
HttpSession session return "register";
) }
{
Optional<User> user = userRepository.findByEmail(username);
if (user.isPresent()) {
request.setAttribute("error", "Email Adresse existiert bereits!");
response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
return "register";
}
if (!password.equals(password2)){ if (!password.equals(password2)) {
request.setAttribute("error", "Passwörter sind nicht gleich"); request.setAttribute("error", "Die Passwörter stimmen nicht überein.");
Outdated
Review

"Die Passwörter sind nicht gleich." ?

"Die Passwörter sind nicht gleich." ?
response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return "register"; return "register";
} }
//set values for new user // set values for new user
User newUser = new User(); User newUser = new User();
newUser.email = username; newUser.email = username;
newUser.setPassword(password); newUser.setPassword(password);
newUser.email = username; newUser.email = username;
newUser.isEmployee = false; newUser.isEmployee = false;
newUser.salutation = salutation; newUser.salutation = salutation;
newUser.defaultPayment = PaymentMethod.fromCreditCardNumber(""); newUser.defaultPayment = PaymentMethod.fromCreditCardNumber("");
newUser.isActive = true; newUser.isActive = true;
newUser.created = new java.sql.Timestamp(System.currentTimeMillis()); newUser.created = new java.sql.Timestamp(System.currentTimeMillis());
Address newAddress = new Address(); Address newAddress = new Address();
newAddress.name = name; newAddress.name = name;
newAddress.addressString = address; newAddress.addressString = address;
newUser.defaultDeliveryAddress = newAddress; newUser.defaultDeliveryAddress = newAddress;
userRepository.save(newUser); // save newUser userRepository.save(newUser); // save newUser
user = userRepository.findByEmail(username); user = userRepository.findByEmail(username);
session.setAttribute("userId", user.get().getId()); session.setAttribute("userId", user.get().getId());
return "redirect:/"; String gto = (String) session.getAttribute("afterLogin");
}
@GetMapping("/register") //login after register
public String register() { if (gto != null && gto.startsWith("/")) {
return "register"; return "redirect:" + gto;
} } else {
return "redirect:/";
}
}
@GetMapping("/register")
public String register() {
return "register";
}
} }

View File

@ -1,78 +1,84 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="de" dir="ltr" xmlns:th="http://www.thymeleaf.org"> <html lang="de" dir="ltr" xmlns:th="http://www.thymeleaf.org">
<head>
<head> <meta charset="utf-8">
<meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=0.75, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=0.75, user-scalable=no"> <title>Neuen Account erstellen</title>
<link rel="stylesheet" th:href="@{/css/ecom.css}"/>
<title>Neuen Account erstellen</title> <script th:src="@{/js/scrollToContent.js}"></script>
<link rel="stylesheet" th:href="@{/css/ecom.css}"/> </head>
<body>
<script th:src="@{/js/scrollToContent.js}"></script> <nav th:replace="fragments/header :: header">Header</nav>
</head> <main class="modal">
<form class="detailflex m" th:action="@{/register}" method="POST">
<body>
<nav th:replace="fragments/header :: header">Header</nav>
<main class="modal">
<form class="detailflex m" th:action="@{/register}" method="POST">
<div>
<h1>Neuen Account erstellen</h1>
</div>
<div>
<h2> Login Daten </h2>
</div>
<div>
<label for="username">Email Adresse</label>
<input class="full-width" type="text" name="username" placeholder="Email Adresse" id="username" required>
</div>
<div>
<label for="password">Passwort</label>
<input class="full-width" type="password" name="password" placeholder="Passwort" id="password" required>
</div>
<div>
<label for="password2">Passwort wiederholen</label>
<input class="full-width" type="password" name="password2" placeholder="Passwort" id="password2" required>
</div>
<div>
<h2> Rechungs- und Lieferinformation </h2>
</div>
<div class="col-2">
<div> <div>
<label for="salutation">Anrede</label> <h1>Neuen Account erstellen</h1>
<input class="full-width" list="salutationsOpt" name="salutation" id="salutation" placeholder="Anrede"
required/>
<datalist id="salutationsOpt">
<option value="Herr">
<option value="Frau">
<option value="Herr Dr.">
<option value="Frau Dr.">
</datalist>
</div> </div>
<div> <div>
<label for="name">Name</label> <h2> Login Daten </h2>
<input class="full-width" type="text" name="name" id="name" placeholder="Nachname Vorname" required/>
</div> </div>
</div> <div>
<label for="username">Email Adresse</label>
<div> <input class="full-width" type="text" name="username" placeholder="Email Adresse" id="username" required>
</div>
<div>
<label for="password">Passwort</label>
<input class="full-width" type="password" name="password" placeholder="Passwort" id="password" required>
</div>
<div>
<label for="password2">Passwort wiederholen</label>
<input class="full-width" type="password" name="password2" placeholder="Passwort" id="password2" required>
</div>
<div>
<h2> Rechungs- und Lieferinformation </h2>
</div>
<div class="col-2">
<div>
<label for="salutation">Anrede</label>
<input class="full-width" list="salutationsOpt" name="salutation" id="salutation" placeholder="Anrede"
required/>
<datalist id="salutationsOpt">
<option value="Herr">
<option value="Frau">
<option value="Herr Dr.">
<option value="Frau Dr.">
</datalist>
</div>
<div>
<label for="name">Name</label>
<input class="full-width" type="text" name="name" id="name" placeholder="Nachname Vorname" required/>
</div>
</div>
<div>
<label for="address">Anschrift</label> <label for="address">Anschrift</label>
<textarea rows="5" class="full-width" type="text" name="address" id="address" <textarea rows="5" class="full-width" type="text" name="address" id="address"
placeholder="Optional: Zusatz&#10;Optional: Unternehmen&#10;Straße Hausnummer&#10;Postleitzeit Ort&#10;Land"></textarea> placeholder="Optional: Zusatz&#10;Optional: Unternehmen&#10;Straße Hausnummer&#10;Postleitzeit Ort&#10;Land"></textarea>
</div> </div>
<div> <fieldset>
<input type="radio" id="type-priv" name="type" value="priv">
<label for="type-priv">Ich bin Privatkunde</label><br>
Outdated
Review

for noch auf die richtige ID setzen.

Auch bei type-bus, ad-y, ad-n

`for` noch auf die richtige ID setzen. Auch bei `type-bus`, `ad-y`, `ad-n`
<input type="radio" id="type-bus" name="type" value="bus">
<label for="type-bus">Ich bin Geschäftskunde</label><br>
</fieldset>
<div>
<h2> Werbung </h2>
</div>
<div>
<fieldset>
<input type="radio" id="ad-y" name="ad" value="y">
<label for="ad-y">Ich möchte Werbung erhalten.</label><br>
<input type="radio" id="ad-n" name="ad" value="n">
<label for="ad-n">Ich möchte keine Werbung erhalten.</label><br>
</fieldset>
</div>
<div>
<button class="full-width" type="submit" name="action" value="login">Registeren</button> <button class="full-width" type="submit" name="action" value="login">Registeren</button>
<a th:href="@{/terms}"> <a th:href="@{/terms}">
Unsere AGBs finden sie hier. Unsere AGBs finden sie hier.
</a> </a>
</div> </div>
</form>
</form> </main>
</main> <footer th:replace="fragments/footer :: footer"></footer>
<footer th:replace="fragments/footer :: footer"></footer> </body>
</body> </html>
</html>