Adds LDAP auth support

This commit is contained in:
Jamie Curnow
2024-11-02 21:36:07 +10:00
parent 8434a2d1fa
commit a277a5d167
54 changed files with 765 additions and 306 deletions

View File

@ -41,14 +41,12 @@ func (s *testsuite) SetupTest() {
s.singleRow = sqlmock.NewRows([]string{
"id",
"name",
"nickname",
"email",
"is_disabled",
"is_system",
}).AddRow(
10,
"John Doe",
"Jonny",
"jon@example.com",
false,
false,
@ -74,14 +72,12 @@ func (s *testsuite) SetupTest() {
s.listRows = sqlmock.NewRows([]string{
"id",
"name",
"nickname",
"email",
"is_disabled",
"is_system",
}).AddRow(
10,
"John Doe",
"Jonny",
"jon@example.com",
false,
false,
@ -104,7 +100,6 @@ func TestExampleTestSuite(t *testing.T) {
func assertModel(t *testing.T, m Model) {
assert.Equal(t, uint(10), m.ID)
assert.Equal(t, "John Doe", m.Name)
assert.Equal(t, "Jonny", m.Nickname)
assert.Equal(t, "jon@example.com", m.Email)
assert.Equal(t, false, m.IsDisabled)
assert.Equal(t, false, m.IsSystem)
@ -182,7 +177,7 @@ func (s *testsuite) TestSave() {
WillReturnRows(s.singleRow)
s.mock.ExpectBegin()
s.mock.ExpectQuery(regexp.QuoteMeta(`INSERT INTO "user" ("created_at","updated_at","is_deleted","name","nickname","email","is_disabled","is_system") VALUES ($1,$2,$3,$4,$5,$6,$7,$8) RETURNING "id"`)).
s.mock.ExpectQuery(regexp.QuoteMeta(`INSERT INTO "user" ("created_at","updated_at","is_deleted","name","email","is_disabled","is_system") VALUES ($1,$2,$3,$4,$5,$6,$7) RETURNING "id"`)).
WithArgs(
sqlmock.AnyArg(),
sqlmock.AnyArg(),
@ -199,7 +194,6 @@ func (s *testsuite) TestSave() {
// New model, as system
m := Model{
Name: "John Doe",
Nickname: "Jonny",
Email: "JON@example.com", // mixed case on purpose
IsSystem: true,
}

View File

@ -2,8 +2,10 @@ package user
import (
"fmt"
"npm/internal/database"
"npm/internal/entity"
"npm/internal/entity/auth"
"npm/internal/logger"
"npm/internal/model"
)
@ -104,3 +106,14 @@ func GetCapabilities(userID uint) ([]string, error) {
}
return capabilities, nil
}
// CreateFromLDAPUser will create a user from an LDAP user object
func CreateFromLDAPUser(ldapUser *auth.LDAPUser) (Model, error) {
user := Model{
Email: ldapUser.Email,
Name: ldapUser.Name,
}
err := user.Save()
user.generateGravatar()
return user, err
}

View File

@ -18,7 +18,6 @@ import (
type Model struct {
model.ModelBase
Name string `json:"name" gorm:"column:name" filter:"name,string"`
Nickname string `json:"nickname" gorm:"column:nickname" filter:"nickname,string"`
Email string `json:"email" gorm:"column:email" filter:"email,email"`
IsDisabled bool `json:"is_disabled" gorm:"column:is_disabled" filter:"is_disabled,boolean"`
IsSystem bool `json:"is_system,omitempty" gorm:"column:is_system" filter:"is_system,boolean"`