Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/AUTHENTICATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ When a client sends a request with `username` and `password`, the proxy performs
7. GET from `{EXT_AUTH_URL}/api/chat?users=1` with Bearer token in Authorization header
8. Parse the response to extract:
- Matrix homeserver configuration (`matrix.base_url`, `matrix.acrobits_url`)
- User mappings from the `users` array (`user_name`, `main_extension`, `sub_extensions`)
- User mappings from the `users` array (`user_name`, `main_extension`, `extensions`)
9. Convert user data into `MappingRequest` objects and cache them

**Error Handling**
Expand Down
10 changes: 5 additions & 5 deletions mock_auth_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type ChatMatrixConfig struct {
type ChatUser struct {
UserName string `json:"user_name"`
MainExtension string `json:"main_extension"`
SubExtensions []string `json:"sub_extensions"`
Extensions []string `json:"extensions"`
}

type ChatResponse struct {
Expand All @@ -46,21 +46,21 @@ type mockAuthUser struct {
Username string
Password string
MainExtension string
SubExtensions []string
Extensions []string
}

var mockAuthUsers = []mockAuthUser{
{
Username: "giacomo",
Password: "Giacomo,1234",
MainExtension: "201",
SubExtensions: []string{"91201", "92201"},
Extensions: []string{"91201", "92201"},
},
{
Username: "mario",
Password: "Mario,1234",
MainExtension: "202",
SubExtensions: []string{"91202"},
Extensions: []string{"91202"},
},
}

Expand Down Expand Up @@ -226,7 +226,7 @@ func handleMockChat(w http.ResponseWriter, r *http.Request) {
response.Users = append(response.Users, ChatUser{
UserName: u.Username,
MainExtension: u.MainExtension,
SubExtensions: u.SubExtensions,
Extensions: u.Extensions,
})
}
}
Expand Down
2 changes: 1 addition & 1 deletion models/mapping.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ type ChatMatrixConfig struct {
type ChatUser struct {
UserName string `json:"user_name"`
MainExtension string `json:"main_extension"`
SubExtensions []string `json:"sub_extensions"`
Extensions []string `json:"extensions"`
}

// JWTClaims holds custom claims from the JWT token
Expand Down
8 changes: 4 additions & 4 deletions service/authclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import (
// AuthResponse represents the user data returned from the external /chat endpoint.
type AuthResponse struct {
MainExtension string `json:"main_extension"`
SubExtensions []string `json:"sub_extensions"`
Extensions []string `json:"extensions"`
UserName string `json:"user_name"`
}

Expand Down Expand Up @@ -211,7 +211,7 @@ func (h *HTTPAuthClient) Validate(ctx context.Context, username, password, homes
// Convert chat users to mappings
mappings := make([]*models.MappingRequest, 0, len(chatResponse.Users))
for _, user := range chatResponse.Users {
logger.Debug().Str("user_name", user.UserName).Str("main_extension", user.MainExtension).Strs("sub_extensions", user.SubExtensions).Msg("authclient: processing chat user")
logger.Debug().Str("user_name", user.UserName).Str("main_extension", user.MainExtension).Strs("extensions", user.Extensions).Msg("authclient: processing chat user")

// Validate main_extension exists and is a number
mainExtStr := strings.TrimSpace(user.MainExtension)
Expand All @@ -226,8 +226,8 @@ func (h *HTTPAuthClient) Validate(ctx context.Context, username, password, homes
}

// Parse sub extensions
subNums := make([]int, 0, len(user.SubExtensions))
for _, ssub := range user.SubExtensions {
subNums := make([]int, 0, len(user.Extensions))
for _, ssub := range user.Extensions {
ssub = strings.TrimSpace(ssub)
if ssub == "" {
continue
Expand Down
12 changes: 6 additions & 6 deletions service/authclient_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@ func TestHTTPAuthClient_SuccessfulTwoStepAuth(t *testing.T) {
{
UserName: "giacomo",
MainExtension: "201",
SubExtensions: []string{"91201", "92201"},
Extensions: []string{"91201", "92201"},
},
{
UserName: "mario",
MainExtension: "202",
SubExtensions: []string{"91202"},
Extensions: []string{"91202"},
},
},
}
Expand Down Expand Up @@ -99,7 +99,7 @@ func TestHTTPAuthClient_PlainUsername(t *testing.T) {
w.WriteHeader(http.StatusOK)
resp := models.ChatResponse{
Users: []models.ChatUser{
{UserName: "giacomo", MainExtension: "201", SubExtensions: []string{}},
{UserName: "giacomo", MainExtension: "201", Extensions: []string{}},
},
}
json.NewEncoder(w).Encode(resp)
Expand Down Expand Up @@ -183,7 +183,7 @@ func TestHTTPAuthClient_CacheHit(t *testing.T) {
w.WriteHeader(http.StatusOK)
resp := models.ChatResponse{
Users: []models.ChatUser{
{UserName: "giacomo", MainExtension: "201", SubExtensions: []string{}},
{UserName: "giacomo", MainExtension: "201", Extensions: []string{}},
},
}
json.NewEncoder(w).Encode(resp)
Expand Down Expand Up @@ -220,8 +220,8 @@ func TestHTTPAuthClient_InvalidMainExtension(t *testing.T) {
w.WriteHeader(http.StatusOK)
resp := models.ChatResponse{
Users: []models.ChatUser{
{UserName: "giacomo", MainExtension: "201", SubExtensions: []string{}},
{UserName: "alice", MainExtension: "invalid", SubExtensions: []string{}},
{UserName: "giacomo", MainExtension: "201", Extensions: []string{}},
{UserName: "alice", MainExtension: "invalid", Extensions: []string{}},
},
}
json.NewEncoder(w).Encode(resp)
Expand Down
4 changes: 2 additions & 2 deletions service/messages_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,7 @@ func TestReportPushToken(t *testing.T) {
w.WriteHeader(http.StatusOK)
resp := models.ChatResponse{
Users: []models.ChatUser{
{UserName: "alice", MainExtension: "201", SubExtensions: []string{"91201"}},
{UserName: "alice", MainExtension: "201", Extensions: []string{"91201"}},
},
}
json.NewEncoder(w).Encode(resp)
Expand Down Expand Up @@ -437,7 +437,7 @@ func TestReportPushToken(t *testing.T) {
w.WriteHeader(http.StatusOK)
resp := models.ChatResponse{
Users: []models.ChatUser{
{UserName: "alice", MainExtension: "201", SubExtensions: []string{"91201"}},
{UserName: "alice", MainExtension: "201", Extensions: []string{"91201"}},
},
}
json.NewEncoder(w).Encode(resp)
Expand Down
Loading