1 module vibeauth.router.login.responses;
2 
3 import std.stdio;
4 import std.datetime;
5 import std..string;
6 import std.uri;
7 import std.file;
8 
9 import vibe.http.router;
10 import vibe.data.json;
11 
12 import vibeauth.users;
13 import vibeauth.configuration;
14 import vibeauth.mail.base;
15 import vibeauth.router.login.routes;
16 import vibeauth.router.request;
17 import vibeauth.mvc.templatedata;
18 import vibeauth.mvc.view;
19 
20 /// User
21 class LoginResponses {
22 
23   private {
24     const {
25       ServiceConfiguration configuration;
26     }
27   }
28 
29   this(const ServiceConfiguration configuration) {
30     this.configuration = configuration;
31   }
32 
33   void resetForm(HTTPServerRequest req, HTTPServerResponse res) {
34     auto requestData = const RequestUserData(req);
35 
36     if(requestData.email == "" || requestData.token == "") {
37       scope auto view = new ResetView(configuration);
38       res.writeBody(view.render, 200, "text/html; charset=UTF-8" );
39       return;
40     }
41 
42     scope auto view = new ChangePasswordView(configuration);
43     Json data = Json.emptyObject;
44 
45     data["email"] = requestData.email;
46     data["token"] = requestData.token;
47 
48     if(requestData.error != "") {
49       view.data.addError(requestData.error);
50     }
51 
52     view.data.add(data);
53 
54     res.writeBody(view.render, 200, "text/html; charset=UTF-8" );
55   }
56 
57   void loginForm(HTTPServerRequest req, HTTPServerResponse res) {
58     auto view = new LoginView(configuration);
59     auto requestData = const RequestUserData(req);
60     Json data = Json.emptyObject;
61 
62     data["username"] = requestData.username;
63 
64     if(requestData.error != "") {
65       view.data.addError(requestData.error);
66     }
67 
68     if(requestData.message != "") {
69       view.data.addMessage(requestData.message);
70     }
71 
72     view.data.add(data);
73     res.writeBody(view.render, 200, "text/html; charset=UTF-8" );
74   }
75 }
76 
77 alias LoginView = BasicView!(
78   "templates.login.formTemplate",
79   "templates.login.form"
80 );
81 
82 alias ResetView = BasicView!(
83   "templates.login.resetTemplate",
84   "templates.login.reset"
85 );
86 
87 alias ChangePasswordView = BasicView!(
88   "templates.login.resetTemplate",
89   "templates.login.resetPassword"
90 );