Commit b0f05439 authored by Andrei Mihu's avatar Andrei Mihu
Browse files

Improve email import semantics when linking social accounts.

parent 67d3d0d1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr
- Improve consistency of authoritative match creation parameter handling.
- Warn when using deprecated config parameters.
- Improve tournament lookup behaviour.
- Improve email import semantics when linking social accounts.

### Fixed
- Fix log level in Lua runtime log calls which use logger fields.
+33 −27
Original line number Diff line number Diff line
@@ -101,7 +101,8 @@ func AuthenticateApple(ctx context.Context, logger *zap.Logger, db *sql.DB, clie
		return "", "", false, status.Error(codes.Internal, "Error finding or creating user account.")
	}

	// Import email address
	// Import email address, if it exists.
	if profile.Email != "" {
		_, err = db.ExecContext(ctx, "UPDATE users SET email = $1 WHERE id = $2", profile.Email, userID)
		if err != nil {
			var pgErr *pgconn.PgError
@@ -112,6 +113,7 @@ func AuthenticateApple(ctx context.Context, logger *zap.Logger, db *sql.DB, clie
				return "", "", false, status.Error(codes.Internal, "Error importing apple account email.")
			}
		}
	}

	return userID, username, true, nil
}
@@ -471,7 +473,8 @@ func AuthenticateFacebook(ctx context.Context, logger *zap.Logger, db *sql.DB, c
		return "", "", false, false, status.Error(codes.Internal, "Error finding or creating user account.")
	}

	// Import email address
	// Import email address, if it exists.
	if facebookProfile.Email != "" {
		_, err = db.ExecContext(ctx, "UPDATE users SET email = $1 WHERE id = $2", facebookProfile.Email, userID)
		if err != nil {
			var pgErr *pgconn.PgError
@@ -482,6 +485,7 @@ func AuthenticateFacebook(ctx context.Context, logger *zap.Logger, db *sql.DB, c
				return "", "", false, false, status.Error(codes.Internal, "Error importing facebook account email.")
			}
		}
	}

	return userID, username, true, importFriendsPossible, nil
}
@@ -725,7 +729,8 @@ func AuthenticateGoogle(ctx context.Context, logger *zap.Logger, db *sql.DB, cli
		return "", "", false, status.Error(codes.Internal, "Error finding or creating user account.")
	}

	// Import email address
	// Import email address, if it exists.
	if googleProfile.Email != "" {
		_, err = db.ExecContext(ctx, "UPDATE users SET email = $1 WHERE id = $2", googleProfile.Email, userID)
		if err != nil {
			var pgErr *pgconn.PgError
@@ -736,6 +741,7 @@ func AuthenticateGoogle(ctx context.Context, logger *zap.Logger, db *sql.DB, cli
				return "", "", false, status.Error(codes.Internal, "Error importing google account email.")
			}
		}
	}

	return userID, username, true, nil
}
+3 −3
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ func LinkApple(ctx context.Context, logger *zap.Logger, db *sql.DB, config Confi

	res, err := db.ExecContext(ctx, `
UPDATE users AS u
SET apple_id = $2, email = COALESCE(NULLIF(u.email, ''), $3), update_time = now()
SET apple_id = $2, email = NULLIF(COALESCE(NULLIF(u.email, ''), $3), ''), update_time = now()
WHERE (id = $1)
AND (NOT EXISTS
    (SELECT id
@@ -206,7 +206,7 @@ func LinkFacebook(ctx context.Context, logger *zap.Logger, db *sql.DB, socialCli

	res, err := db.ExecContext(ctx, `
UPDATE users AS u
SET facebook_id = $2, display_name = COALESCE(NULLIF(u.display_name, ''), $3), email = COALESCE(NULLIF(u.email, ''), $4), avatar_url = COALESCE(NULLIF(u.avatar_url, ''), $5), update_time = now()
SET facebook_id = $2, display_name = COALESCE(NULLIF(u.display_name, ''), $3), email = NULLIF(COALESCE(NULLIF(u.email, ''), $4), ''), avatar_url = COALESCE(NULLIF(u.avatar_url, ''), $5), update_time = now()
WHERE (id = $1)
AND (NOT EXISTS
    (SELECT id
@@ -329,7 +329,7 @@ func LinkGoogle(ctx context.Context, logger *zap.Logger, db *sql.DB, socialClien

	res, err := db.ExecContext(ctx, `
UPDATE users AS u
SET google_id = $2, display_name = COALESCE(NULLIF(u.display_name, ''), $3), avatar_url = COALESCE(NULLIF(u.avatar_url, ''), $4), email = COALESCE(NULLIF(u.email, ''), $5), update_time = now()
SET google_id = $2, display_name = COALESCE(NULLIF(u.display_name, ''), $3), avatar_url = COALESCE(NULLIF(u.avatar_url, ''), $4), email = NULLIF(COALESCE(NULLIF(u.email, ''), $5), ''), update_time = now()
WHERE (id = $1)
AND (NOT EXISTS
    (SELECT id