aboutsummaryrefslogtreecommitdiff
path: root/src/handlers/users.rs.html
diff options
context:
space:
mode:
Diffstat (limited to 'src/handlers/users.rs.html')
-rw-r--r--src/handlers/users.rs.html137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/handlers/users.rs.html b/src/handlers/users.rs.html
new file mode 100644
index 0000000..a233b04
--- /dev/null
+++ b/src/handlers/users.rs.html
@@ -0,0 +1,137 @@
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2<html>
3<head>
4<meta http-equiv="content-type" content="text/html; charset=UTF-8">
5<title>~/code/rust/actix-tests/src/handlers/users.rs.html</title>
6<meta name="Generator" content="Vim/8.0">
7<meta name="plugin-version" content="vim8.1_v1">
8<meta name="syntax" content="rust">
9<meta name="settings" content="use_css,no_foldcolumn,expand_tabs,prevent_copy=">
10<meta name="colorscheme" content="plain">
11<style type="text/css">
12<!--
13pre { font-family: monospace; color: #c0c0c0; background-color: #000000; }
14body { font-family: monospace; color: #c0c0c0; background-color: #000000; }
15* { font-size: 1em; }
16.Statement { color: #c0c0c0; background-color: #000000; padding-bottom: 1px; font-weight: bold; }
17.Normal { color: #c0c0c0; background-color: #000000; padding-bottom: 1px; }
18.Function { color: #c0c0c0; font-weight: bold; }
19.secondAccent { color: #c000c0; background-color: #000000; padding-bottom: 1px; }
20.Noise { color: #8080ff; background-color: #000000; padding-bottom: 1px; }
21.rustModPath { color: #ff40ff; background-color: #000000; padding-bottom: 1px; }
22.Constant { color: #008080; background-color: #000000; padding-bottom: 1px; }
23.StatusLine { color: #808080; background-color: #000000; padding-bottom: 1px; }
24-->
25</style>
26</head>
27<body>
28<pre id='vimCodeElement'>
29<span class="Noise">use</span> <span class="rustModPath">crate</span><span class="StatusLine">::</span><span class="rustModPath">models</span><span class="StatusLine">::</span>{Member, NewMember};
30<span class="Noise">use</span> <span class="rustModPath">crate</span><span class="StatusLine">::</span><span class="rustModPath">schema</span><span class="StatusLine">::</span><span class="rustModPath">members</span><span class="StatusLine">::</span><span class="rustModPath">dsl</span><span class="StatusLine">::</span><span class="Statement">*</span>;
31<span class="Noise">use</span> <span class="rustModPath">crate</span><span class="StatusLine">::</span>TPool;
32
33<span class="Noise">use</span> <span class="rustModPath">actix_identity</span><span class="StatusLine">::</span>Identity;
34<span class="Noise">use</span> <span class="rustModPath">actix_web</span><span class="StatusLine">::</span>{web, HttpResponse, Responder};
35<span class="Noise">use</span> <span class="rustModPath">bcrypt</span><span class="StatusLine">::</span>{hash, verify, DEFAULT_COST};
36<span class="Noise">use</span> <span class="rustModPath">diesel</span><span class="StatusLine">::</span><span class="rustModPath">prelude</span><span class="StatusLine">::</span><span class="Statement">*</span>;
37<span class="Noise">use</span> <span class="rustModPath">log</span><span class="StatusLine">::</span>{error, info};
38<span class="Noise">use</span> <span class="rustModPath">serde</span><span class="StatusLine">::</span>Deserialize;
39
40<span class="Noise">pub</span> <span class="Noise">async</span> <span class="Noise">fn</span> <span class="Function">new_user</span>(
41 pool: <span class="rustModPath">web</span><span class="StatusLine">::</span>Data<span class="Noise">&lt;</span>TPool<span class="Noise">&gt;</span>,
42 item: <span class="rustModPath">web</span><span class="StatusLine">::</span>Json<span class="Noise">&lt;</span>NewMember<span class="Noise">&gt;</span>,
43) <span class="Noise">-&gt;</span> <span class="Noise">impl</span> Responder {
44 <span class="Noise">let</span> conn <span class="Noise">=</span> pool.<span class="Function">get</span>().<span class="Function">unwrap</span>();
45 <span class="Noise">let</span> hashed_item <span class="Noise">=</span> NewMember {
46 password: <span class="Function">hash</span>(<span class="Statement">&amp;</span>item.password, DEFAULT_COST).<span class="Function">unwrap</span>(),
47 ..(item.<span class="Function">into_inner</span>())
48 };
49 <span class="rustModPath">diesel</span><span class="StatusLine">::</span><span class="Function">insert_into</span>(members)
50 .<span class="Function">values</span>(hashed_item)
51 .<span class="Function">execute</span>(<span class="Statement">&amp;</span>conn)
52 .<span class="Function">expect</span>(<span class="Constant">&quot;</span><span class="Constant">Coundn't connect to DB</span><span class="Constant">&quot;</span>);
53 <span class="rustModPath">HttpResponse</span><span class="StatusLine">::</span><span class="Constant">Ok</span>().<span class="Function">body</span>(<span class="Constant">&quot;</span><span class="Constant">Inserted successfully!</span><span class="Constant">&quot;</span>)
54}
55
56<span class="Noise">pub</span> <span class="Noise">async</span> <span class="Noise">fn</span> <span class="Function">name_exists</span>(
57 pool: <span class="rustModPath">web</span><span class="StatusLine">::</span>Data<span class="Noise">&lt;</span>TPool<span class="Noise">&gt;</span>,
58 item: <span class="Normal">String</span>,
59) <span class="Noise">-&gt;</span> <span class="Noise">impl</span> Responder {
60 <span class="Noise">let</span> conn <span class="Noise">=</span> pool.<span class="Function">get</span>().<span class="Function">unwrap</span>();
61 <span class="secondAccent">info!</span>(<span class="Constant">&quot;</span><span class="Constant">target: {:?}</span><span class="Constant">&quot;</span>, item);
62 <span class="Statement">if</span> (members
63 .<span class="Function">filter</span>(username.<span class="Function">eq</span>(<span class="Statement">&amp;</span>item))
64 .<span class="Function">limit</span>(<span class="Constant">1</span>)
65 .<span class="Function">load</span><span class="StatusLine">::</span><span class="Noise">&lt;</span>Member<span class="Noise">&gt;</span>(<span class="Statement">&amp;</span>conn)
66 .<span class="Function">expect</span>(<span class="Constant">&quot;</span><span class="Constant">Coundn't connect to DB</span><span class="Constant">&quot;</span>))
67 .<span class="Function">len</span>()
68 <span class="Noise">&gt;</span> <span class="Constant">0</span>
69 {
70 <span class="rustModPath">HttpResponse</span><span class="StatusLine">::</span><span class="Constant">Ok</span>().<span class="Function">body</span>(<span class="Constant">&quot;</span><span class="Constant">true</span><span class="Constant">&quot;</span>)
71 } <span class="Statement">else</span> {
72 <span class="rustModPath">HttpResponse</span><span class="StatusLine">::</span><span class="Constant">Ok</span>().<span class="Function">body</span>(<span class="Constant">&quot;</span><span class="Constant">false</span><span class="Constant">&quot;</span>)
73 }
74}
75
76<span class="secondAccent">#[</span><span class="secondAccent">derive(Deserialize)</span><span class="secondAccent">]</span>
77<span class="Noise">pub</span> <span class="Statement">struct</span> <span class="Normal">Login</span> {
78 username: <span class="Normal">String</span>,
79 password: <span class="Normal">String</span>,
80}
81
82<span class="Noise">pub</span> <span class="Noise">async</span> <span class="Noise">fn</span> <span class="Function">login</span>(
83 pool: <span class="rustModPath">web</span><span class="StatusLine">::</span>Data<span class="Noise">&lt;</span>TPool<span class="Noise">&gt;</span>,
84 cookie: Identity,
85 login_details: <span class="rustModPath">web</span><span class="StatusLine">::</span>Form<span class="Noise">&lt;</span>Login<span class="Noise">&gt;</span>,
86) <span class="Noise">-&gt;</span> <span class="Noise">impl</span> Responder {
87 <span class="Noise">let</span> conn <span class="Noise">=</span> pool.<span class="Function">get</span>().<span class="Function">unwrap</span>();
88 <span class="Noise">let</span> entered_pass <span class="Noise">=</span> <span class="Statement">&amp;</span>login_details.password;
89 <span class="Noise">let</span> selected_user <span class="Noise">=</span> members
90 .<span class="Function">filter</span>(username.<span class="Function">eq</span>(<span class="Statement">&amp;</span>login_details.username))
91 .<span class="Function">limit</span>(<span class="Constant">1</span>)
92 .<span class="Function">first</span><span class="StatusLine">::</span><span class="Noise">&lt;</span>Member<span class="Noise">&gt;</span>(<span class="Statement">&amp;</span>conn)
93 .<span class="Function">expect</span>(<span class="Constant">&quot;</span><span class="Constant">Couldn't connect to DB</span><span class="Constant">&quot;</span>);
94 <span class="Noise">let</span> hashed_pass <span class="Noise">=</span> selected_user.password;
95 <span class="Statement">if</span> <span class="Function">verify</span>(entered_pass, <span class="Statement">&amp;</span>hashed_pass).<span class="Function">unwrap</span>() {
96 cookie.<span class="Function">remember</span>(login_details.username.<span class="Function">clone</span>());
97 <span class="secondAccent">info!</span>(
98 <span class="Constant">&quot;</span><span class="Constant">Successful login: {} {}</span><span class="Constant">&quot;</span>,
99 selected_user.username, selected_user.email_id
100 );
101 <span class="rustModPath">HttpResponse</span><span class="StatusLine">::</span><span class="Function">Found</span>().<span class="Function">header</span>(<span class="Constant">&quot;</span><span class="Constant">location</span><span class="Constant">&quot;</span>, <span class="Constant">&quot;</span><span class="Constant">/</span><span class="Constant">&quot;</span>).<span class="Function">finish</span>()
102 } <span class="Statement">else</span> {
103 <span class="rustModPath">HttpResponse</span><span class="StatusLine">::</span><span class="Function">Unauthorized</span>().<span class="Function">finish</span>()
104 }
105}
106
107<span class="Noise">pub</span> <span class="Noise">async</span> <span class="Noise">fn</span> <span class="Function">logout</span>(cookie: Identity) <span class="Noise">-&gt;</span> <span class="Noise">impl</span> Responder {
108 cookie.<span class="Function">forget</span>();
109 <span class="rustModPath">HttpResponse</span><span class="StatusLine">::</span><span class="Function">Found</span>().<span class="Function">header</span>(<span class="Constant">&quot;</span><span class="Constant">location</span><span class="Constant">&quot;</span>, <span class="Constant">&quot;</span><span class="Constant">/</span><span class="Constant">&quot;</span>).<span class="Function">finish</span>()
110}
111
112<span class="Noise">pub</span> <span class="Noise">async</span> <span class="Noise">fn</span> <span class="Function">user_details</span>(
113 uname: <span class="rustModPath">web</span><span class="StatusLine">::</span>Path<span class="Noise">&lt;</span><span class="Normal">String</span><span class="Noise">&gt;</span>,
114 pool: <span class="rustModPath">web</span><span class="StatusLine">::</span>Data<span class="Noise">&lt;</span>TPool<span class="Noise">&gt;</span>,
115) <span class="Noise">-&gt;</span> <span class="Noise">impl</span> Responder {
116 <span class="Noise">let</span> conn <span class="Noise">=</span> pool.<span class="Function">get</span>().<span class="Function">unwrap</span>();
117 <span class="Noise">let</span> uname <span class="Noise">=</span> uname.<span class="Function">into_inner</span>();
118 <span class="secondAccent">info!</span>(<span class="Constant">&quot;</span><span class="Constant">Fetching info for: </span><span class="StatusLine">\&quot;</span><span class="Constant">{}</span><span class="StatusLine">\&quot;</span><span class="Constant">&quot;</span>, uname);
119 <span class="Noise">let</span> selected_user <span class="Noise">=</span> members
120 .<span class="Function">filter</span>(username.<span class="Function">eq</span>(<span class="Statement">&amp;</span>uname))
121 .<span class="Function">limit</span>(<span class="Constant">1</span>)
122 .<span class="Function">first</span><span class="StatusLine">::</span><span class="Noise">&lt;</span>Member<span class="Noise">&gt;</span>(<span class="Statement">&amp;</span>conn);
123 <span class="Statement">match</span> selected_user {
124 <span class="Constant">Ok</span>(m) <span class="Noise">=&gt;</span> {
125 <span class="secondAccent">info!</span>(<span class="Constant">&quot;</span><span class="Constant">Found user: {}</span><span class="Constant">&quot;</span>, uname);
126 <span class="rustModPath">HttpResponse</span><span class="StatusLine">::</span><span class="Constant">Ok</span>().<span class="Function">json</span>(m)
127 }
128 <span class="Constant">Err</span>(_) <span class="Noise">=&gt;</span> {
129 <span class="secondAccent">error!</span>(<span class="Constant">&quot;</span><span class="Constant">User not found: {}</span><span class="Constant">&quot;</span>, uname);
130 <span class="rustModPath">HttpResponse</span><span class="StatusLine">::</span><span class="Function">NotFound</span>().<span class="Function">finish</span>()
131 }
132 }
133}
134</pre>
135</body>
136</html>
137<!-- vim: set foldmethod=manual : -->