Skip to content

Commit 608452c

Browse files
committed
GenerateBasic add *http.Request support
1 parent 8692936 commit 608452c

File tree

5 files changed

+53
-27
lines changed

5 files changed

+53
-27
lines changed

generate.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package oauth2
22

3-
import "time"
3+
import (
4+
"net/http"
5+
"time"
6+
)
47

58
type (
69
// GenerateBasic provide the basis of the generated token data
@@ -9,6 +12,7 @@ type (
912
UserID string
1013
CreateAt time.Time
1114
TokenInfo TokenInfo
15+
Request *http.Request
1216
}
1317

1418
// AuthorizeGenerate generate the authorization code interface

manage.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package oauth2
22

33
import (
4+
"net/http"
45
"time"
56
)
67

@@ -14,6 +15,7 @@ type TokenGenerateRequest struct {
1415
Code string
1516
Refresh string
1617
AccessTokenExp time.Duration
18+
Request *http.Request
1719
}
1820

1921
// Manager authorization management interface

manage/manager.go

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -175,49 +175,56 @@ func (m *Manager) GenerateAuthToken(rt oauth2.ResponseType, tgr *oauth2.TokenGen
175175
ti.SetRedirectURI(tgr.RedirectURI)
176176
ti.SetScope(tgr.Scope)
177177

178+
createAt := time.Now()
178179
td := &oauth2.GenerateBasic{
179180
Client: cli,
180181
UserID: tgr.UserID,
181-
CreateAt: time.Now(),
182+
CreateAt: createAt,
182183
TokenInfo: ti,
184+
Request: tgr.Request,
183185
}
184186
switch rt {
185187
case oauth2.Code:
186-
tv, terr := gen.Token(td)
187-
if terr != nil {
188-
err = terr
189-
return
190-
}
191-
ti.SetCode(tv)
192188
codeExp := m.codeExp
193189
if codeExp == 0 {
194190
codeExp = DefaultCodeExp
195191
}
192+
ti.SetCodeCreateAt(createAt)
196193
ti.SetCodeExpiresIn(codeExp)
197-
ti.SetCodeCreateAt(td.CreateAt)
198194
if exp := tgr.AccessTokenExp; exp > 0 {
199195
ti.SetAccessExpiresIn(exp)
200196
}
201-
case oauth2.Token:
202-
icfg := m.grantConfig(oauth2.Implicit)
203-
tv, rv, terr := tgen.Token(td, icfg.IsGenerateRefresh)
197+
198+
tv, terr := gen.Token(td)
204199
if terr != nil {
205200
err = terr
206201
return
207202
}
208-
ti.SetAccess(tv)
209-
ti.SetAccessCreateAt(td.CreateAt)
203+
ti.SetCode(tv)
204+
case oauth2.Token:
210205
// set access token expires
206+
icfg := m.grantConfig(oauth2.Implicit)
211207
aexp := icfg.AccessTokenExp
212208
if exp := tgr.AccessTokenExp; exp > 0 {
213209
aexp = exp
214210
}
211+
ti.SetAccessCreateAt(createAt)
215212
ti.SetAccessExpiresIn(aexp)
216213

214+
if icfg.IsGenerateRefresh {
215+
ti.SetRefreshCreateAt(createAt)
216+
ti.SetRefreshExpiresIn(icfg.RefreshTokenExp)
217+
}
218+
219+
tv, rv, terr := tgen.Token(td, icfg.IsGenerateRefresh)
220+
if terr != nil {
221+
err = terr
222+
return
223+
}
224+
ti.SetAccess(tv)
225+
217226
if rv != "" {
218227
ti.SetRefresh(rv)
219-
ti.SetRefreshCreateAt(td.CreateAt)
220-
ti.SetRefreshExpiresIn(icfg.RefreshTokenExp)
221228
}
222229
}
223230

@@ -298,31 +305,38 @@ func (m *Manager) GenerateAccessToken(gt oauth2.GrantType, tgr *oauth2.TokenGene
298305
ti.SetRedirectURI(tgr.RedirectURI)
299306
ti.SetScope(tgr.Scope)
300307

308+
createAt := time.Now()
309+
ti.SetAccessCreateAt(createAt)
310+
311+
// set access token expires
312+
gcfg := m.grantConfig(gt)
313+
aexp := gcfg.AccessTokenExp
314+
if exp := tgr.AccessTokenExp; exp > 0 {
315+
aexp = exp
316+
}
317+
ti.SetAccessExpiresIn(aexp)
318+
if gcfg.IsGenerateRefresh {
319+
ti.SetRefreshCreateAt(createAt)
320+
ti.SetRefreshExpiresIn(gcfg.RefreshTokenExp)
321+
}
322+
301323
td := &oauth2.GenerateBasic{
302324
Client: cli,
303325
UserID: tgr.UserID,
304-
CreateAt: time.Now(),
326+
CreateAt: createAt,
305327
TokenInfo: ti,
328+
Request: tgr.Request,
306329
}
307-
gcfg := m.grantConfig(gt)
308330

309331
av, rv, terr := gen.Token(td, gcfg.IsGenerateRefresh)
310332
if terr != nil {
311333
err = terr
312334
return
313335
}
314-
ti.SetAccessCreateAt(td.CreateAt)
315336
ti.SetAccess(av)
316-
// set access token expires
317-
aexp := gcfg.AccessTokenExp
318-
if exp := tgr.AccessTokenExp; exp > 0 {
319-
aexp = exp
320-
}
321-
ti.SetAccessExpiresIn(aexp)
337+
322338
if rv != "" {
323339
ti.SetRefresh(rv)
324-
ti.SetRefreshCreateAt(td.CreateAt)
325-
ti.SetRefreshExpiresIn(gcfg.RefreshTokenExp)
326340
}
327341

328342
err = stor.Create(ti)
@@ -362,6 +376,7 @@ func (m *Manager) RefreshAccessToken(tgr *oauth2.TokenGenerateRequest) (accessTo
362376
UserID: ti.GetUserID(),
363377
CreateAt: time.Now(),
364378
TokenInfo: ti,
379+
Request: tgr.Request,
365380
}
366381

367382
rcfg := DefaultRefreshTokenCfg

server/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package server
22

33
import (
4+
"net/http"
45
"time"
56

67
"gopkg.in/oauth2.v3"
@@ -37,4 +38,5 @@ type AuthorizeRequest struct {
3738
State string
3839
UserID string
3940
AccessTokenExp time.Duration
41+
Request *http.Request
4042
}

server/server.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ func (s *Server) ValidationAuthorizeRequest(r *http.Request) (req *AuthorizeRequ
178178
ClientID: clientID,
179179
State: r.FormValue("state"),
180180
Scope: r.FormValue("scope"),
181+
Request: r,
181182
}
182183
return
183184
}
@@ -221,6 +222,7 @@ func (s *Server) GetAuthorizeToken(req *AuthorizeRequest) (ti oauth2.TokenInfo,
221222
RedirectURI: req.RedirectURI,
222223
Scope: req.Scope,
223224
AccessTokenExp: req.AccessTokenExp,
225+
Request: req.Request,
224226
}
225227

226228
ti, err = s.Manager.GenerateAuthToken(req.ResponseType, tgr)
@@ -315,6 +317,7 @@ func (s *Server) ValidationTokenRequest(r *http.Request) (gt oauth2.GrantType, t
315317
tgr = &oauth2.TokenGenerateRequest{
316318
ClientID: clientID,
317319
ClientSecret: clientSecret,
320+
Request: r,
318321
}
319322

320323
switch gt {

0 commit comments

Comments
 (0)