1 package io.extact.rms.client.console.ui;
2
3 import static io.extact.rms.client.console.ui.ClientConstants.*;
4 import static io.extact.rms.client.console.ui.textio.TextIoUtils.*;
5
6 import jakarta.enterprise.event.Event;
7
8 import lombok.RequiredArgsConstructor;
9
10 import io.extact.rms.client.api.RentalReservationClientApi;
11 import io.extact.rms.client.api.dto.UserAccountClientDto;
12 import io.extact.rms.client.api.exception.BusinessFlowClientException;
13 import io.extact.rms.client.api.login.LoggedInEvent;
14 import io.extact.rms.client.console.ui.TransitionMap.RmsScreen;
15 import io.extact.rms.client.console.ui.TransitionMap.Transition;
16 import io.extact.rms.platform.env.Environment;
17
18
19
20
21
22 @RequiredArgsConstructor
23 public class LoginScreen implements RmsScreen {
24
25 private final RentalReservationClientApi clientApi;
26 private final Event<LoggedInEvent> loggedInEvent;
27
28 @Override
29 public Transition play(UserAccountClientDto dummy, boolean printHeader) {
30 try {
31 if (printHeader) {
32
33 var jarInfo = Environment.getMainJarInfo();
34 println("[version:" + jarInfo.getVersion() + "/build-time:" + jarInfo.getBuildtimeInfo() + "]");
35 println(LOGIN_INFORMATION);
36 blankLine();
37 }
38
39 var loginId = newStringInputReader()
40 .withMinLength(5)
41 .withMaxLength(10)
42 .withDefaultValue("edamame")
43 .read("ログインID");
44 if (loginId.equals(SCREEN_BREAK_KEY)) {
45 return Transition.END;
46 }
47
48 var password = newStringInputReader()
49 .withMinLength(5)
50 .withMaxLength(10)
51 .withDefaultValue("edamame")
52 .withInputMasking(true)
53 .read("パスワード");
54
55
56 var nowLoginUser = clientApi.authenticate(loginId, password);
57
58
59 loggedInEvent.fire(new LoggedInEvent(nowLoginUser));
60
61 return nowLoginUser.getUserType().isAdmin() ? Transition.ADMIN_MAIN : Transition.MEMBER_MAIN;
62
63 } catch (BusinessFlowClientException e) {
64 printServerError(e);
65 return play(dummy, false);
66
67 }
68 }
69 }