1
1
package web
2
2
3
3
import (
4
- "fmt"
4
+ "io"
5
+ "net/url"
5
6
6
7
"github.com/lunny/tango"
7
8
"github.com/tango-contrib/binding"
9
+ "github.com/tango-contrib/flash"
8
10
"github.com/tango-contrib/renders"
9
11
"github.com/tango-contrib/session"
10
12
"github.com/tango-contrib/xsrf"
@@ -34,7 +36,6 @@ func (a *BaseAuthAction) AskLogin() bool {
34
36
35
37
func (a * BaseAction ) IsLogin () bool {
36
38
id := a .Session .Get ("userId" )
37
- fmt .Println (id )
38
39
return id != nil
39
40
}
40
41
@@ -84,11 +85,13 @@ func (a *MainAction) Get() {
84
85
type LoginAction struct {
85
86
BaseAction
86
87
xsrf.Checker
88
+ flash.Flash
87
89
}
88
90
89
91
func (a * LoginAction ) Get () error {
90
92
return a .Render ("login.html" , renders.T {
91
93
"XsrfFormHtml" : a .Checker .XsrfFormHtml (),
94
+ "Flash" : a .Flash .Data (),
92
95
})
93
96
}
94
97
@@ -100,19 +103,21 @@ func (a *LoginAction) Post() error {
100
103
}
101
104
102
105
if user .Name == "" || user .Pass == "" {
103
- return a . Render ( "login.html " , renders. T {
104
- "msg" : "用户名或者密码错误" ,
105
- })
106
+ a . Flash . Set ( "error " , "用户名或者密码错误" )
107
+ a . Redirect ( "/login" )
108
+ return nil
106
109
}
107
110
108
111
p , err := DB .GetUser (user .Name )
109
112
if err != nil {
110
- return err
113
+ a .Flash .Set ("error" , err .Error ())
114
+ a .Redirect ("/login" )
115
+ return nil
111
116
}
112
117
if p != user .Pass {
113
- return a . Render ( "login.html " , renders. T {
114
- "msg" : "用户名或者密码错误" ,
115
- })
118
+ a . Flash . Set ( "error " , "用户名或者密码错误" )
119
+ a . Redirect ( "/login" )
120
+ return nil
116
121
}
117
122
118
123
a .SetLogin (user .Name )
@@ -132,3 +137,29 @@ func (a *LogoutAction) Get() {
132
137
a .Logout ()
133
138
a .Redirect ("/" )
134
139
}
140
+
141
+ type DownAction struct {
142
+ BaseAuthAction
143
+ }
144
+
145
+ func (d * DownAction ) Get () error {
146
+ var err error
147
+ p := d .Form ("path" )
148
+ p , err = url .QueryUnescape (p )
149
+ if err != nil {
150
+ return err
151
+ }
152
+
153
+ driver , err := Factory .NewDriver ()
154
+ if err != nil {
155
+ return err
156
+ }
157
+
158
+ _ , rd , err := driver .GetFile (p , 0 )
159
+ if err != nil {
160
+ return err
161
+ }
162
+
163
+ _ , err = io .Copy (d .ResponseWriter , rd )
164
+ return err
165
+ }
0 commit comments