mirror of
https://github.com/harness/drone.git
synced 2025-05-08 12:00:02 +08:00
Geting users by email, fix for Postgres (#150)
This commit is contained in:
parent
9f7d6cc857
commit
ff934c840f
@ -17,6 +17,4 @@ principal_id SERIAL PRIMARY KEY
|
||||
,principal_sa_parent_id INTEGER
|
||||
|
||||
,UNIQUE(principal_uid_unique)
|
||||
,UNIQUE(principal_email)
|
||||
,UNIQUE(principal_salt)
|
||||
);
|
||||
|
@ -0,0 +1,2 @@
|
||||
CREATE UNIQUE INDEX index_principals_lower_email
|
||||
ON principals(LOWER(principal_email));
|
@ -2,8 +2,8 @@ CREATE TABLE principals (
|
||||
principal_id INTEGER PRIMARY KEY AUTOINCREMENT
|
||||
,principal_uid TEXT
|
||||
,principal_uid_unique TEXT
|
||||
,principal_email TEXT COLLATE NOCASE
|
||||
,principal_type TEXT COLLATE NOCASE
|
||||
,principal_email TEXT
|
||||
,principal_type TEXT
|
||||
,principal_display_name TEXT
|
||||
,principal_admin BOOLEAN
|
||||
,principal_blocked BOOLEAN
|
||||
@ -13,10 +13,8 @@ principal_id INTEGER PRIMARY KEY AUTOINCREMENT
|
||||
|
||||
,principal_user_password TEXT
|
||||
|
||||
,principal_sa_parent_type TEXT COLLATE NOCASE
|
||||
,principal_sa_parent_id INTEGER
|
||||
,principal_sa_parent_type TEXT
|
||||
,principal_sa_parent_id INTEGER
|
||||
|
||||
,UNIQUE(principal_uid_unique)
|
||||
,UNIQUE(principal_email COLLATE NOCASE)
|
||||
,UNIQUE(principal_salt)
|
||||
);
|
||||
|
@ -0,0 +1,2 @@
|
||||
CREATE UNIQUE INDEX index_principals_lower_email
|
||||
ON principals(LOWER(principal_email));
|
@ -7,6 +7,7 @@ package database
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/harness/gitness/internal/store"
|
||||
"github.com/harness/gitness/internal/store/database/dbtx"
|
||||
@ -77,8 +78,11 @@ func (s *UserStore) FindUID(ctx context.Context, uid string) (*types.User, error
|
||||
func (s *UserStore) FindEmail(ctx context.Context, email string) (*types.User, error) {
|
||||
db := dbtx.GetAccessor(ctx, s.db)
|
||||
|
||||
const sqlQuery = userBase + `
|
||||
WHERE principal_type = 'user' AND LOWER(principal_email) = $1`
|
||||
|
||||
dst := new(user)
|
||||
if err := db.GetContext(ctx, dst, userSelectEmail, email); err != nil {
|
||||
if err := db.GetContext(ctx, dst, sqlQuery, strings.ToLower(email)); err != nil {
|
||||
return nil, processSQLErrorf(err, "Select by email query failed")
|
||||
}
|
||||
|
||||
@ -170,7 +174,7 @@ func (s *UserStore) List(ctx context.Context, opts *types.UserFilter) ([]*types.
|
||||
case enum.UserAttrUpdated:
|
||||
stmt = stmt.OrderBy("principal_updated " + opts.Order.String())
|
||||
case enum.UserAttrEmail:
|
||||
stmt = stmt.OrderBy("principal_email " + opts.Order.String())
|
||||
stmt = stmt.OrderBy("LOWER(principal_email) " + opts.Order.String())
|
||||
case enum.UserAttrUID:
|
||||
stmt = stmt.OrderBy("principal_uid " + opts.Order.String())
|
||||
case enum.UserAttrAdmin:
|
||||
@ -268,10 +272,6 @@ const userSelectUIDUnique = userBase + `
|
||||
WHERE principal_type = 'user' AND principal_uid_unique = $1
|
||||
`
|
||||
|
||||
const userSelectEmail = userBase + `
|
||||
WHERE principal_type = 'user' AND principal_email = $1
|
||||
`
|
||||
|
||||
const userDelete = `
|
||||
DELETE FROM principals
|
||||
WHERE principal_type = 'user' AND principal_id = $1
|
||||
|
Loading…
Reference in New Issue
Block a user