6
6
#include " jwt_controller.h"
7
7
#include " msg_controller.h"
8
8
using namespace drogon ;
9
+
9
10
typedef std::string (*HandlerFunc)(const Json::Value&);
10
- void Handle (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback, HandlerFunc handler){
11
+
12
+ void Handle (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback, HandlerFunc handler)
13
+ {
11
14
auto body = req->getBody ();
12
- Json::Value req_json,res_json;
15
+
16
+ Json::Value req_json, res_json;
13
17
Json::Reader reader;
14
18
std::string bodyStr (body);
15
- if (!reader.parse (bodyStr, req_json)) {
19
+
20
+ if (!reader.parse (bodyStr, req_json))
21
+ {
16
22
callback (HttpResponse::newHttpResponse ());
17
23
return ;
18
24
}
25
+
19
26
Json::FastWriter writer;
20
27
std::string msg = handler (req_json);
28
+
21
29
res_json[" msg" ] = msg;
22
- if (msg.find (" Success" )!= std::string::npos){
30
+ if (msg.find (" Success" )!= std::string::npos)
31
+ {
23
32
res_json[" token" ] = jwtGen (req_json);
24
33
res_json[" username" ] = req_json[" username" ].asString ();
25
34
}
35
+
26
36
auto output = writer.write (res_json);
27
37
auto res = HttpResponse::newHttpResponse ();
38
+
28
39
res->addHeader (" Access-Control-Allow-Origin" , " *" );
29
40
res->setBody (output);
41
+
30
42
callback (res);
31
43
}
32
- std::string sha256 (const std::string str){
44
+
45
+ std::string sha256 (const std::string str)
46
+ {
33
47
unsigned char hash[SHA256_DIGEST_LENGTH];
34
48
35
49
SHA256_CTX sha256;
50
+
36
51
SHA256_Init (&sha256);
37
52
SHA256_Update (&sha256, str.c_str (), str.size ());
38
53
SHA256_Final (hash, &sha256);
39
54
40
55
std::stringstream ss;
41
56
42
- for (int i = 0 ; i < SHA256_DIGEST_LENGTH; i++){
43
- ss << std::hex << std::setw (2 ) << std::setfill (' 0' ) << static_cast <int >( hash[i] );
44
- }
57
+ for (int i = 0 ; i < SHA256_DIGEST_LENGTH; i++)
58
+ ss << std::hex << std::setw (2 ) << std::setfill (' 0' ) << static_cast <int >(hash[i]);
59
+
45
60
return ss.str ();
46
61
}
47
- std::string registerUser (const Json::Value& req_json) {
48
- // std::cout<<"Receive Username : "<<req_json["username"].asString()<<std::endl;
49
- // std::cout<<"Receive Passwd: "<<req_json["password"].asString()<<std::endl;
50
- if (sql_check (req_json[" username" ].asString ())){
62
+
63
+ std::string registerUser (const Json::Value& req_json)
64
+ {
65
+ if (sql_check (req_json[" username" ].asString ()))
66
+ {
51
67
sql_add (req_json[" username" ].asString (), sha256 (req_json[" password" ].asString ()), req_json[" avatar" ].asInt ());
52
68
return " Sign up Success" ;
53
- }else
54
- return " User already exist" ;
69
+ }
70
+ return " User already exist" ;
55
71
}
56
- std::string loginUser (const Json::Value& req_json) {
57
- if (sql_check (req_json[" username" ].asString (), sha256 (req_json[" password" ].asString ()))){
72
+
73
+ std::string loginUser (const Json::Value& req_json)
74
+ {
75
+ if (sql_check (req_json[" username" ].asString (), sha256 (req_json[" password" ].asString ())))
58
76
return " Login Success" ;
59
- }else
60
- return " Login Failed" ;
77
+ return " Login Failed" ;
61
78
}
62
- void avatar (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) {
79
+
80
+ void avatar (const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback)
81
+ {
63
82
auto res = HttpResponse::newHttpResponse ();
64
83
res->addHeader (" Access-Control-Allow-Origin" , " *" );
65
- if (jwtVerify (req)) {
84
+
85
+ if (jwtVerify (req))
86
+ {
66
87
std::string receiver = jwtDecrypt (req->getHeader (" Authorization" ).substr (7 ));
67
88
set_avatar (receiver, stoi (req->getParameter (" avatar" )));
68
89
res->setBody (" Success" );
69
- } else {
90
+ } else
70
91
res->setBody (" No Authorization" );
71
- }
72
92
callback (res);
73
93
}
0 commit comments