Disable Gravatar (#37)

* Disable Gravatar
* Lowercase emails
* Add migration
هذا الالتزام موجود في:
Thomas Miceli
2023-05-26 09:15:37 +02:00
ملتزم من قبل GitHub
الأصل 7cc77d80dc
التزام 4a75a50370
17 ملفات معدلة مع 138 إضافات و17 حذوفات

عرض الملف

@@ -13,6 +13,7 @@ const (
SettingDisableSignup = "disable-signup"
SettingRequireLogin = "require-login"
SettingDisableLoginForm = "disable-login-form"
SettingDisableGravatar = "disable-gravatar"
)
func GetSetting(key string) (string, error) {

عرض الملف

@@ -30,6 +30,7 @@ func Setup(dbpath string) error {
SettingDisableSignup: "0",
SettingRequireLogin: "0",
SettingDisableLoginForm: "0",
SettingDisableGravatar: "0",
})
}

عرض الملف

@@ -28,6 +28,7 @@ func ApplyMigrations(db *gorm.DB) error {
Func func(*gorm.DB) error
}{
{1, v1_modifyConstraintToSSHKeys},
{2, v2_lowercaseEmails},
// Add more migrations here as needed
}
@@ -94,3 +95,9 @@ func v1_modifyConstraintToSSHKeys(db *gorm.DB) error {
renameSQL := `ALTER TABLE ssh_keys_temp RENAME TO ssh_keys;`
return db.Exec(renameSQL).Error
}
func v2_lowercaseEmails(db *gorm.DB) error {
// Copy the lowercase emails into the new column
copySQL := `UPDATE users SET email = lower(email);`
return db.Exec(copySQL).Error
}

عرض الملف

@@ -12,6 +12,7 @@ type User struct {
CreatedAt int64
Email string
MD5Hash string // for gravatar, if no Email is specified, the value is random
AvatarURL string
GithubID string
GiteaID string
@@ -81,6 +82,30 @@ func GetUserById(userId uint) (*User, error) {
return user, err
}
func GetUsersFromEmails(emailsSet map[string]struct{}) (map[string]*User, error) {
var users []*User
emails := make([]string, 0, len(emailsSet))
for email := range emailsSet {
emails = append(emails, email)
}
err := db.
Where("email IN ?", emails).
Find(&users).Error
if err != nil {
return nil, err
}
userMap := make(map[string]*User)
for _, user := range users {
userMap[user.Email] = user
}
return userMap, nil
}
func SSHKeyExistsForUser(sshKey string, userId uint) (*SSHKey, error) {
key := new(SSHKey)
err := db.
@@ -135,9 +160,15 @@ func (user *User) HasLiked(gist *Gist) (bool, error) {
func (user *User) DeleteProviderID(provider string) error {
switch provider {
case "github":
return db.Model(&user).Update("github_id", nil).Error
return db.Model(&user).
Update("github_id", nil).
Update("avatar_url", nil).
Error
case "gitea":
return db.Model(&user).Update("gitea_id", nil).Error
return db.Model(&user).
Update("gitea_id", nil).
Update("avatar_url", nil).
Error
}
return nil