Skip to content

Commit f5b08a0

Browse files
committed
feat: 增强API密钥创建功能的日志记录
- 在CreateAPIKey处理器中添加详细的日志记录,包括请求接收、生成、哈希和数据库保存过程中的信息 - 更新错误处理,记录生成和哈希API密钥时的失败原因 - 优化公共头部组件的结构,简化代码 Signed-off-by: longjin <[email protected]>
1 parent a9a8bda commit f5b08a0

File tree

4 files changed

+68
-20
lines changed

4 files changed

+68
-20
lines changed

backend/internal/api/handlers/admin.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,17 +122,37 @@ func CreateAPIKey(c *gin.Context) {
122122
}
123123

124124
if err := c.ShouldBindJSON(&req); err != nil {
125+
logger.LogWarn(c, logger.ModuleHandler, "create_api_key invalid_request error=%s", err.Error())
125126
response.BadRequest(c, err.Error())
126127
return
127128
}
128129

130+
logger.LogInfo(
131+
c,
132+
logger.ModuleHandler,
133+
"create_api_key request_received name=%s project_id=%v expires_at=%v",
134+
req.Name,
135+
req.ProjectID,
136+
req.ExpiresAt,
137+
)
138+
129139
// 创建API密钥(expiresAt 直接使用请求中的字符串)
130140
apiKey, key, err := services.CreateAPIKey(c, req.Name, req.ProjectID, req.ExpiresAt)
131141
if err != nil {
142+
logger.LogError(c, logger.ModuleHandler, err, "create_api_key service_failed name=%s", req.Name)
132143
response.InternalServerError(c, "Failed to create API key")
133144
return
134145
}
135146

147+
logger.LogInfo(
148+
c,
149+
logger.ModuleHandler,
150+
"create_api_key success api_key_id=%d project_id=%v name=%s",
151+
apiKey.ID,
152+
apiKey.ProjectID,
153+
apiKey.Name,
154+
)
155+
136156
response.Success(c, gin.H{
137157
"id": apiKey.ID,
138158
"name": apiKey.Name,

backend/internal/services/api_key.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"github.com/dragonos/dragonos-ci-dashboard/internal/config"
99
"github.com/dragonos/dragonos-ci-dashboard/internal/models"
10+
"github.com/dragonos/dragonos-ci-dashboard/pkg/logger"
1011
"github.com/gin-gonic/gin"
1112
"golang.org/x/crypto/bcrypt"
1213
"gorm.io/gorm"
@@ -53,15 +54,26 @@ func ValidateAPIKey(apiKey string) (*models.APIKey, error) {
5354

5455
// CreateAPIKey 创建API Key
5556
func CreateAPIKey(c *gin.Context, name string, projectID *uint64, expiresAt *string) (*models.APIKey, string, error) {
57+
logger.LogInfo(
58+
c,
59+
logger.ModuleService,
60+
"create_api_key started name=%s project_id=%v expires_at=%v",
61+
name,
62+
projectID,
63+
expiresAt,
64+
)
65+
5666
// 生成新的API Key
5767
apiKey, err := GenerateAPIKey()
5868
if err != nil {
69+
logger.LogError(c, logger.ModuleService, err, "create_api_key generate_failed name=%s", name)
5970
return nil, "", fmt.Errorf("failed to generate API key: %w", err)
6071
}
6172

6273
// 哈希API Key
6374
keyHash, err := HashAPIKey(apiKey)
6475
if err != nil {
76+
logger.LogError(c, logger.ModuleService, err, "create_api_key hash_failed name=%s", name)
6577
return nil, "", fmt.Errorf("failed to hash API key: %w", err)
6678
}
6779

@@ -78,10 +90,27 @@ func CreateAPIKey(c *gin.Context, name string, projectID *uint64, expiresAt *str
7890
}
7991

8092
db := getDB(c)
93+
logger.LogDebug(
94+
c,
95+
logger.ModuleService,
96+
"create_api_key saving_to_db name=%s project_id=%v",
97+
name,
98+
projectID,
99+
)
81100
if err := db.Create(newKey).Error; err != nil {
101+
logger.LogError(c, logger.ModuleService, err, "create_api_key db_create_failed name=%s", name)
82102
return nil, "", fmt.Errorf("failed to create API key: %w", err)
83103
}
84104

105+
logger.LogInfo(
106+
c,
107+
logger.ModuleService,
108+
"create_api_key completed api_key_id=%d name=%s project_id=%v",
109+
newKey.ID,
110+
newKey.Name,
111+
newKey.ProjectID,
112+
)
113+
85114
return newKey, apiKey, nil
86115
}
87116

frontend/src/components/Footer.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,4 +221,3 @@ const goToLogin = () => {
221221
}
222222
}
223223
</style>
224-

frontend/src/components/PublicHeader.vue

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
<template>
22
<header class="header">
3-
<div class="header-content">
4-
<div
5-
class="logo"
6-
:class="{ 'logo-clickable': showBack }"
7-
@click="handleLogoClick"
3+
<div class="header-content">
4+
<div
5+
class="logo"
6+
:class="{ 'logo-clickable': showBack }"
7+
@click="handleLogoClick"
8+
>
9+
<img :src="logoImage" class="logo-icon" alt="DragonOS Logo" />
10+
<span class="logo-text">DragonOS CI Dashboard</span>
11+
</div>
12+
<div class="header-actions">
13+
<t-button
14+
theme="default"
15+
variant="outline"
16+
@click="goToCommunity"
17+
class="community-btn"
818
>
9-
<img :src="logoImage" class="logo-icon" alt="DragonOS Logo" />
10-
<span class="logo-text">DragonOS CI Dashboard</span>
11-
</div>
12-
<div class="header-actions">
13-
<t-button
14-
theme="default"
15-
variant="outline"
16-
@click="goToCommunity"
17-
class="community-btn"
18-
>
19-
<t-icon name="logo-github" />
20-
社区主页
21-
</t-button>
22-
</div>
19+
<t-icon name="logo-github" />
20+
社区主页
21+
</t-button>
2322
</div>
23+
</div>
2424
</header>
2525
</template>
2626

0 commit comments

Comments
 (0)