mirror of
https://github.com/snowykami/neo-blog.git
synced 2025-09-04 00:06:22 +00:00
⚡ refactor user service methods, implement OIDC login and user management features, and enhance token handling
This commit is contained in:
@ -6,7 +6,7 @@ type userRepo struct{}
|
||||
|
||||
var User = &userRepo{}
|
||||
|
||||
func (user *userRepo) GetByUsername(username string) (*model.User, error) {
|
||||
func (user *userRepo) GetUserByUsername(username string) (*model.User, error) {
|
||||
var userModel model.User
|
||||
if err := GetDB().Where("username = ?", username).First(&userModel).Error; err != nil {
|
||||
return nil, err
|
||||
@ -14,7 +14,7 @@ func (user *userRepo) GetByUsername(username string) (*model.User, error) {
|
||||
return &userModel, nil
|
||||
}
|
||||
|
||||
func (user *userRepo) GetByEmail(email string) (*model.User, error) {
|
||||
func (user *userRepo) GetUserByEmail(email string) (*model.User, error) {
|
||||
var userModel model.User
|
||||
if err := GetDB().Where("email = ?", email).First(&userModel).Error; err != nil {
|
||||
return nil, err
|
||||
@ -22,7 +22,15 @@ func (user *userRepo) GetByEmail(email string) (*model.User, error) {
|
||||
return &userModel, nil
|
||||
}
|
||||
|
||||
func (user *userRepo) GetByUsernameOrEmail(usernameOrEmail string) (*model.User, error) {
|
||||
func (user *userRepo) GetUserByID(id uint) (*model.User, error) {
|
||||
var userModel model.User
|
||||
if err := GetDB().Where("id = ?", id).First(&userModel).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &userModel, nil
|
||||
}
|
||||
|
||||
func (user *userRepo) GetUserByUsernameOrEmail(usernameOrEmail string) (*model.User, error) {
|
||||
var userModel model.User
|
||||
if err := GetDB().Where("username = ? OR email = ?", usernameOrEmail, usernameOrEmail).First(&userModel).Error; err != nil {
|
||||
return nil, err
|
||||
@ -30,14 +38,14 @@ func (user *userRepo) GetByUsernameOrEmail(usernameOrEmail string) (*model.User,
|
||||
return &userModel, nil
|
||||
}
|
||||
|
||||
func (user *userRepo) Create(userModel *model.User) error {
|
||||
func (user *userRepo) CreateUser(userModel *model.User) error {
|
||||
if err := GetDB().Create(userModel).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (user *userRepo) Update(userModel *model.User) error {
|
||||
func (user *userRepo) UpdateUser(userModel *model.User) error {
|
||||
if err := GetDB().Updates(userModel).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
@ -59,3 +67,40 @@ func (user *userRepo) CheckEmailExists(email string) (bool, error) {
|
||||
}
|
||||
return count > 0, nil
|
||||
}
|
||||
|
||||
func (user *userRepo) ListOidcConfigs(onlyEnabled bool) ([]model.OidcConfig, error) {
|
||||
var configs []model.OidcConfig
|
||||
if onlyEnabled {
|
||||
if err := GetDB().Where("enabled = ?", true).Find(&configs).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
if err := GetDB().Find(&configs).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return configs, nil
|
||||
}
|
||||
|
||||
func (user *userRepo) GetOidcConfigByName(name string) (*model.OidcConfig, error) {
|
||||
var config model.OidcConfig
|
||||
if err := GetDB().Where("name = ?", name).First(&config).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &config, nil
|
||||
}
|
||||
|
||||
func (user *userRepo) CreateOrUpdateUserOpenID(userOpenID *model.UserOpenID) error {
|
||||
if err := GetDB().Save(userOpenID).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (user *userRepo) GetUserOpenIDByIssuerAndSub(issuer, sub string) (*model.UserOpenID, error) {
|
||||
var userOpenID model.UserOpenID
|
||||
if err := GetDB().Where("issuer = ? AND sub = ?", issuer, sub).First(&userOpenID).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &userOpenID, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user