mirror of
https://github.com/snowykami/neo-blog.git
synced 2025-09-03 15:56:22 +00:00
⚡️ feat: add main page layout with navigation and footer
feat: create random labels page feat: implement login page with OpenID Connect support feat: add Gravatar component for user avatars feat: create Navbar component with navigation menu chore: create Sidebar component placeholder feat: implement login form with OIDC and email/password options feat: add reusable button component feat: create card component for structured content display feat: implement input component for forms feat: create label component for form labels feat: add navigation menu component for site navigation chore: add configuration file for site metadata feat: implement device context for responsive design feat: add utility functions for class name management feat: define OIDC configuration model feat: define base response model for API responses feat: define user model for user data feat: implement i18n for internationalization support feat: add English and Chinese translations for login chore: create index for locale resources chore: add blog home view placeholder
This commit is contained in:
@ -1,15 +1,14 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
CaptchaTypeDisable = "disable" // 禁用验证码
|
||||
CaptchaTypeHCaptcha = "hcaptcha" // HCaptcha验证码
|
||||
CaptchaTypeTurnstile = "turnstile" // Turnstile验证码
|
||||
CaptchaTypeReCaptcha = "recaptcha" // ReCaptcha验证码
|
||||
ModeDev = "dev"
|
||||
ModeProd = "prod"
|
||||
RoleUser = "user"
|
||||
RoleAdmin = "admin"
|
||||
|
||||
CaptchaTypeDisable = "disable" // 禁用验证码
|
||||
CaptchaTypeHCaptcha = "hcaptcha" // HCaptcha验证码
|
||||
CaptchaTypeTurnstile = "turnstile" // Turnstile验证码
|
||||
CaptchaTypeReCaptcha = "recaptcha" // ReCaptcha验证码
|
||||
ModeDev = "dev"
|
||||
ModeProd = "prod"
|
||||
RoleUser = "user"
|
||||
RoleAdmin = "admin"
|
||||
EnvKeyBaseUrl = "BASE_URL" // 环境变量:基础URL
|
||||
EnvKeyMode = "MODE" // 环境变量:运行模式
|
||||
EnvKeyJwtSecrete = "JWT_SECRET" // 环境变量:JWT密钥
|
||||
@ -18,13 +17,26 @@ const (
|
||||
EnvKeyTokenDurationDefault = 300
|
||||
EnvKeyRefreshTokenDuration = "REFRESH_TOKEN_DURATION" // 环境变量:刷新令牌有效期
|
||||
EnvKeyRefreshTokenDurationWithRemember = "REFRESH_TOKEN_DURATION_WITH_REMEMBER" // 环境变量:记住我刷新令牌有效期
|
||||
KVKeyEmailVerificationCode = "email_verification_code:" // KV存储:邮箱验证码
|
||||
KVKeyOidcState = "oidc_state:" // KV存储:OIDC状态
|
||||
ApiSuffix = "/api/v1" // API版本前缀
|
||||
OidcUri = "/user/oidc/login" // OIDC登录URI
|
||||
OidcProviderTypeMisskey = "misskey" // OIDC提供者类型:Misskey
|
||||
OidcProviderTypeOauth2 = "oauth2" // OIDC提供者类型:GitHub
|
||||
DefaultBaseUrl = "http://localhost:3000" // 默认BaseUrl
|
||||
TargetTypePost = "post"
|
||||
TargetTypeComment = "comment"
|
||||
OrderedByCreatedAt = "created_at" // 按创建时间排序
|
||||
OrderedByUpdatedAt = "updated_at" // 按更新时间排序
|
||||
OrderedByLikeCount = "like_count" // 按点赞数排序
|
||||
OrderedByCommentCount = "comment_count" // 按评论数排序
|
||||
OrderedByViewCount = "view_count" // 按浏览量排序
|
||||
HeatFactorViewWeight = 1 // 热度因子:浏览量权重
|
||||
HeatFactorLikeWeight = 5 // 热度因子:点赞权重
|
||||
HeatFactorCommentWeight = 10 // 热度因子:评论权重
|
||||
|
||||
KVKeyEmailVerificationCode = "email_verification_code:" // KV存储:邮箱验证码
|
||||
KVKeyOidcState = "oidc_state:" // KV存储:OIDC状态
|
||||
|
||||
OidcUri = "/user/oidc/login" // OIDC登录URI
|
||||
DefaultBaseUrl = "http://localhost:3000" // 默认BaseUrl
|
||||
|
||||
TargetTypePost = "post"
|
||||
TargetTypeComment = "comment"
|
||||
)
|
||||
|
||||
var (
|
||||
OrderedByEnumPost = []string{OrderedByCreatedAt, OrderedByUpdatedAt, OrderedByLikeCount, OrderedByCommentCount, OrderedByViewCount} // 帖子可用的排序方式
|
||||
)
|
||||
|
@ -18,11 +18,15 @@ func Ok(c *app.RequestContext, message string, data any) {
|
||||
Custom(c, 200, message, data)
|
||||
}
|
||||
|
||||
func Redirect(c *app.RequestContext, url string) {
|
||||
c.Redirect(302, []byte(url))
|
||||
}
|
||||
|
||||
func BadRequest(c *app.RequestContext, message string) {
|
||||
Custom(c, 400, message, nil)
|
||||
}
|
||||
|
||||
func UnAuthorized(c *app.RequestContext, message string) {
|
||||
func Unauthorized(c *app.RequestContext, message string) {
|
||||
Custom(c, 401, message, nil)
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,6 @@ func (u *oidcUtils) RequestUserInfo(userInfoEndpoint, accessToken string) (*User
|
||||
SetHeader("Accept", "application/json").
|
||||
SetResult(&UserInfo{}).
|
||||
Get(userInfoEndpoint)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
Reference in New Issue
Block a user