Skip to content

Commit 5559ef4

Browse files
committed
fixed collection handler
1 parent 0a6801e commit 5559ef4

File tree

1 file changed

+66
-45
lines changed

1 file changed

+66
-45
lines changed

token.go

Lines changed: 66 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,13 @@ func (ts *TokenStore) c(name string) *mgo.Collection {
7979
return ts.session.DB(ts.mcfg.DB).C(name)
8080
}
8181

82+
func (ts *TokenStore) cHandler(name string, handler func(c *mgo.Collection)) {
83+
session := ts.session.Clone()
84+
defer session.Close()
85+
handler(session.DB(ts.mcfg.DB).C(name))
86+
return
87+
}
88+
8289
// Create Create and store the new token information
8390
func (ts *TokenStore) Create(info oauth2.TokenInfo) (err error) {
8491
jv, err := json.Marshal(info)
@@ -87,10 +94,12 @@ func (ts *TokenStore) Create(info oauth2.TokenInfo) (err error) {
8794
}
8895

8996
if code := info.GetCode(); code != "" {
90-
err = ts.c(ts.tcfg.BasicCName).Insert(basicData{
91-
ID: code,
92-
Data: jv,
93-
ExpiredAt: info.GetCodeCreateAt().Add(info.GetCodeExpiresIn()),
97+
ts.cHandler(ts.tcfg.BasicCName, func(c *mgo.Collection) {
98+
err = c.Insert(basicData{
99+
ID: code,
100+
Data: jv,
101+
ExpiredAt: info.GetCodeCreateAt().Add(info.GetCodeExpiresIn()),
102+
})
94103
})
95104
return
96105
}
@@ -104,7 +113,6 @@ func (ts *TokenStore) Create(info oauth2.TokenInfo) (err error) {
104113
}
105114
}
106115
id := bson.NewObjectId().Hex()
107-
runner := txn.NewRunner(ts.c(ts.tcfg.TxnCName))
108116
ops := []txn.Op{{
109117
C: ts.tcfg.BasicCName,
110118
Id: id,
@@ -133,76 +141,89 @@ func (ts *TokenStore) Create(info oauth2.TokenInfo) (err error) {
133141
},
134142
})
135143
}
136-
err = runner.Run(ops, "", nil)
144+
ts.cHandler(ts.tcfg.TxnCName, func(c *mgo.Collection) {
145+
runner := txn.NewRunner(c)
146+
err = runner.Run(ops, "", nil)
147+
})
137148
return
138149
}
139150

140151
// RemoveByCode Use the authorization code to delete the token information
141152
func (ts *TokenStore) RemoveByCode(code string) (err error) {
142-
verr := ts.c(ts.tcfg.BasicCName).RemoveId(code)
143-
if verr != nil {
144-
if verr == mgo.ErrNotFound {
145-
return
153+
ts.cHandler(ts.tcfg.BasicCName, func(c *mgo.Collection) {
154+
verr := c.RemoveId(code)
155+
if verr != nil {
156+
if verr == mgo.ErrNotFound {
157+
return
158+
}
159+
err = verr
146160
}
147-
err = verr
148-
}
161+
})
149162
return
150163
}
151164

152165
// RemoveByAccess Use the access token to delete the token information
153166
func (ts *TokenStore) RemoveByAccess(access string) (err error) {
154-
verr := ts.c(ts.tcfg.AccessCName).RemoveId(access)
155-
if verr != nil {
156-
if verr == mgo.ErrNotFound {
157-
return
167+
ts.cHandler(ts.tcfg.AccessCName, func(c *mgo.Collection) {
168+
verr := c.RemoveId(access)
169+
if verr != nil {
170+
if verr == mgo.ErrNotFound {
171+
return
172+
}
173+
err = verr
158174
}
159-
err = verr
160-
}
175+
})
161176
return
162177
}
163178

164179
// RemoveByRefresh Use the refresh token to delete the token information
165180
func (ts *TokenStore) RemoveByRefresh(refresh string) (err error) {
166-
verr := ts.c(ts.tcfg.RefreshCName).RemoveId(refresh)
167-
if verr != nil {
168-
if verr == mgo.ErrNotFound {
169-
return
181+
ts.cHandler(ts.tcfg.RefreshCName, func(c *mgo.Collection) {
182+
verr := c.RemoveId(refresh)
183+
if verr != nil {
184+
if verr == mgo.ErrNotFound {
185+
return
186+
}
187+
err = verr
170188
}
171-
err = verr
172-
}
189+
})
173190
return
174191
}
175192

176193
func (ts *TokenStore) getData(basicID string) (ti oauth2.TokenInfo, err error) {
177-
var bd basicData
178-
verr := ts.c(ts.tcfg.BasicCName).FindId(basicID).One(&bd)
179-
if verr != nil {
180-
if verr == mgo.ErrNotFound {
194+
ts.cHandler(ts.tcfg.BasicCName, func(c *mgo.Collection) {
195+
var bd basicData
196+
verr := c.FindId(basicID).One(&bd)
197+
if verr != nil {
198+
if verr == mgo.ErrNotFound {
199+
return
200+
}
201+
err = verr
181202
return
182203
}
183-
err = verr
184-
return
185-
}
186-
var tm models.Token
187-
err = json.Unmarshal(bd.Data, &tm)
188-
if err != nil {
189-
return
190-
}
191-
ti = &tm
204+
var tm models.Token
205+
err = json.Unmarshal(bd.Data, &tm)
206+
if err != nil {
207+
return
208+
}
209+
ti = &tm
210+
})
192211
return
193212
}
194213

195214
func (ts *TokenStore) getBasicID(cname, token string) (basicID string, err error) {
196-
var td tokenData
197-
verr := ts.c(cname).FindId(token).One(&td)
198-
if verr != nil {
199-
if verr == mgo.ErrNotFound {
215+
ts.cHandler(cname, func(c *mgo.Collection) {
216+
var td tokenData
217+
verr := c.FindId(token).One(&td)
218+
if verr != nil {
219+
if verr == mgo.ErrNotFound {
220+
return
221+
}
222+
err = verr
200223
return
201224
}
202-
err = verr
203-
return
204-
}
205-
basicID = td.BasicID
225+
basicID = td.BasicID
226+
})
206227
return
207228
}
208229

0 commit comments

Comments
 (0)