Skip to content

Commit 1bc4fd1

Browse files
Add API token to session object
1 parent a799d73 commit 1bc4fd1

File tree

3 files changed

+74
-1
lines changed

3 files changed

+74
-1
lines changed

models/auth/token.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,63 @@ func UpdateAccessToken(t *AccessToken) error {
207207
return err
208208
}
209209

210+
const KitspaceTokenName = "__kitspace"
211+
const KitspaceApiToken = "ApiToken"
212+
213+
func RenewKitspaceAccessToken(t *AccessToken) (*AccessToken, error) {
214+
err := DeleteKitspaceAccessToken(t.UID)
215+
if err != nil {
216+
return nil, err
217+
}
218+
err = NewAccessToken(t)
219+
if err != nil {
220+
return nil, err
221+
}
222+
return t, nil
223+
}
224+
225+
func GetKitspaceAccessToken(userID int64) (*AccessToken, error) {
226+
token := &AccessToken{
227+
UID: userID,
228+
Name: KitspaceTokenName,
229+
}
230+
231+
exists, err := AccessTokenByNameExists(token)
232+
233+
if err != nil {
234+
return nil, err
235+
}
236+
237+
if !exists {
238+
return CreateKitspaceAccessToken(userID)
239+
}
240+
241+
return RenewKitspaceAccessToken(token)
242+
}
243+
244+
func CreateKitspaceAccessToken(userID int64) (*AccessToken, error) {
245+
token := &AccessToken{
246+
UID: userID,
247+
Name: KitspaceTokenName,
248+
}
249+
250+
err := NewAccessToken(token)
251+
252+
if err != nil {
253+
return nil, err
254+
}
255+
return token, nil
256+
}
257+
258+
func DeleteKitspaceAccessToken(userID int64) error {
259+
_, err := db.GetEngine(db.DefaultContext).
260+
Table("access_token").
261+
Where("name = ?", KitspaceTokenName).
262+
And("uid = ?", userID).
263+
Delete()
264+
return err
265+
}
266+
210267
// CountAccessTokens count access tokens belongs to given user by options
211268
func CountAccessTokens(opts ListAccessTokensOptions) (int64, error) {
212269
sess := db.GetEngine(db.DefaultContext).Where("uid=?", opts.UserID)

routers/web/auth/auth.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@ func getUserName(gothUser *goth.User) string {
382382

383383
// HandleSignOut resets the session and sets the cookies
384384
func HandleSignOut(ctx *context.Context) {
385+
auth.DeleteKitspaceAccessToken(ctx.Doer.ID)
385386
_ = ctx.Session.Flush()
386387
_ = ctx.Session.Destroy(ctx.Resp, ctx.Req)
387388
ctx.DeleteCookie(setting.CookieUserName)

routers/web/auth/kitspace_auth.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package auth
33
import (
44
"net/http"
55

6+
auth_model "code.gitea.io/gitea/models/auth"
67
"code.gitea.io/gitea/models/db"
78
user_model "code.gitea.io/gitea/models/user"
89
"code.gitea.io/gitea/modules/context"
@@ -110,7 +111,6 @@ func KitspaceSignUp(ctx *context.Context) {
110111

111112
// Return the success response with user details
112113
response["user"] = convert.ToUser(u, u)
113-
114114
ctx.JSON(http.StatusCreated, response)
115115
}
116116

@@ -206,9 +206,24 @@ func GetKitspaceSession(ctx *context.Context) {
206206
user = convert.ToUser(ctx.Doer, ctx.Doer)
207207
}
208208

209+
if user != nil && ctx.Session.Get(auth_model.KitspaceApiToken) == nil {
210+
token, err := auth_model.GetKitspaceAccessToken(user.ID)
211+
if err != nil {
212+
ctx.ServerError("Kitspace session error", err)
213+
return
214+
}
215+
216+
err = ctx.Session.Set(auth_model.KitspaceApiToken, token.Token)
217+
if err != nil {
218+
ctx.ServerError("Kitspace session error", err)
219+
return
220+
}
221+
}
222+
209223
response := make(map[string]interface{})
210224
response["user"] = user
211225
response["csrf"] = ctx.Data["CsrfToken"]
226+
response["ApiToken"] = ctx.Session.Get(auth_model.KitspaceApiToken)
212227

213228
ctx.JSON(http.StatusOK, response)
214229
}

0 commit comments

Comments
 (0)