@mavenmm/teamwork-auth 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/useTeamworkAuth.d.ts +4 -2
- package/dist/hooks/useTeamworkAuth.d.ts.map +1 -1
- package/dist/index.esm.js +54 -8
- package/dist/index.esm.js.map +1 -1
- package/package.json +4 -9
- package/CHANGELOG.md +0 -55
- package/README.md +0 -403
- package/dist/hooks/useTeamworkSSO.d.ts +0 -16
- package/dist/hooks/useTeamworkSSO.d.ts.map +0 -1
- package/dist/utils/env.d.ts +0 -3
- package/dist/utils/env.d.ts.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { User } from "../types";
|
|
2
2
|
export interface TeamworkAuthConfig {
|
|
3
|
-
authServiceUrl
|
|
3
|
+
authServiceUrl?: string;
|
|
4
4
|
cookieDomain?: string;
|
|
5
5
|
}
|
|
6
|
-
export declare function useTeamworkAuth(config
|
|
6
|
+
export declare function useTeamworkAuth(config?: TeamworkAuthConfig): {
|
|
7
7
|
user: User | null;
|
|
8
8
|
setUser: import("react").Dispatch<import("react").SetStateAction<User | null>>;
|
|
9
9
|
loading: boolean;
|
|
@@ -12,5 +12,7 @@ export declare function useTeamworkAuth(config: TeamworkAuthConfig): {
|
|
|
12
12
|
twUser: any;
|
|
13
13
|
}>;
|
|
14
14
|
logout: () => Promise<void>;
|
|
15
|
+
error: string | null;
|
|
16
|
+
authServiceUrl: string;
|
|
15
17
|
};
|
|
16
18
|
//# sourceMappingURL=useTeamworkAuth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTeamworkAuth.d.ts","sourceRoot":"","sources":["../../src/hooks/useTeamworkAuth.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,IAAI,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"useTeamworkAuth.d.ts","sourceRoot":"","sources":["../../src/hooks/useTeamworkAuth.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,IAAI,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyCD,wBAAgB,eAAe,CAAC,MAAM,GAAE,kBAAuB;;;;;kBAUlC,MAAM;;;;;;EA4NlC"}
|
package/dist/index.esm.js
CHANGED
|
@@ -31,14 +31,44 @@ if (typeof Buffer === "undefined") {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Auto-detect the auth service URL based on environment
|
|
36
|
+
*/
|
|
37
|
+
function detectAuthServiceUrl() {
|
|
38
|
+
const hostname = window.location.hostname;
|
|
39
|
+
// Production: *.mavenmm.com domains use centralized auth service
|
|
40
|
+
if (hostname.endsWith('.mavenmm.com') || hostname === 'mavenmm.com') {
|
|
41
|
+
return 'https://auth.mavenmm.com';
|
|
37
42
|
}
|
|
38
|
-
|
|
43
|
+
// Development: localhost uses local auth service on port 9100
|
|
44
|
+
if (hostname === 'localhost' || hostname === '127.0.0.1') {
|
|
45
|
+
return 'http://localhost:9100';
|
|
46
|
+
}
|
|
47
|
+
// Fallback for unknown environments
|
|
48
|
+
console.warn(`TeamworkAuth: Unknown hostname "${hostname}". Defaulting to localhost:9100. ` +
|
|
49
|
+
'Please provide authServiceUrl explicitly if this is incorrect.');
|
|
50
|
+
return 'http://localhost:9100';
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Auto-detect cookie domain based on hostname
|
|
54
|
+
*/
|
|
55
|
+
function detectCookieDomain() {
|
|
56
|
+
const hostname = window.location.hostname;
|
|
57
|
+
// Production: use .mavenmm.com for cross-subdomain cookies
|
|
58
|
+
if (hostname.endsWith('.mavenmm.com') || hostname === 'mavenmm.com') {
|
|
59
|
+
return '.mavenmm.com';
|
|
60
|
+
}
|
|
61
|
+
// Development: localhost doesn't need explicit cookie domain
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
function useTeamworkAuth(config = {}) {
|
|
65
|
+
// Auto-detect auth service URL if not provided
|
|
66
|
+
const authServiceUrl = config.authServiceUrl || detectAuthServiceUrl();
|
|
67
|
+
const cookieDomain = config.cookieDomain ?? detectCookieDomain();
|
|
39
68
|
const [user, setUser] = useState(null);
|
|
40
69
|
const [loading, setLoading] = useState(true);
|
|
41
70
|
const [isAuthenticated, setIsAuthenticated] = useState(false);
|
|
71
|
+
const [error, setError] = useState(null);
|
|
42
72
|
const login = async (code) => {
|
|
43
73
|
try {
|
|
44
74
|
const options = {
|
|
@@ -118,8 +148,8 @@ function useTeamworkAuth(config) {
|
|
|
118
148
|
document.cookie =
|
|
119
149
|
"maven_auth_token=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT";
|
|
120
150
|
// For non-localhost environments, also clear with configured domain
|
|
121
|
-
if (window.location.hostname !== "localhost" &&
|
|
122
|
-
document.cookie = `maven_auth_token=; path=/; domain=${
|
|
151
|
+
if (window.location.hostname !== "localhost" && cookieDomain) {
|
|
152
|
+
document.cookie = `maven_auth_token=; path=/; domain=${cookieDomain}; expires=Thu, 01 Jan 1970 00:00:00 GMT`;
|
|
123
153
|
}
|
|
124
154
|
}
|
|
125
155
|
catch (error) {
|
|
@@ -207,10 +237,26 @@ function useTeamworkAuth(config) {
|
|
|
207
237
|
localStorage.removeItem("maven_sso_user");
|
|
208
238
|
}
|
|
209
239
|
}
|
|
210
|
-
catch (
|
|
240
|
+
catch (err) {
|
|
211
241
|
setIsAuthenticated(false);
|
|
212
242
|
setUser(null);
|
|
213
243
|
localStorage.removeItem("maven_sso_user");
|
|
244
|
+
// Check if this is a connection error (auth service not reachable)
|
|
245
|
+
const isConnectionError = err instanceof TypeError && err.message.includes('fetch');
|
|
246
|
+
if (isConnectionError && authServiceUrl.includes('localhost:9100')) {
|
|
247
|
+
const errorMessage = '⚠️ Auth service not running on localhost:9100\n\n' +
|
|
248
|
+
'To start the auth service:\n' +
|
|
249
|
+
' cd auth-service/\n' +
|
|
250
|
+
' npm run dev\n\n' +
|
|
251
|
+
'Or provide a custom authServiceUrl in the config.';
|
|
252
|
+
setError(errorMessage);
|
|
253
|
+
console.error(errorMessage);
|
|
254
|
+
}
|
|
255
|
+
else if (isConnectionError) {
|
|
256
|
+
const errorMessage = `⚠️ Cannot connect to auth service at ${authServiceUrl}`;
|
|
257
|
+
setError(errorMessage);
|
|
258
|
+
console.error(errorMessage);
|
|
259
|
+
}
|
|
214
260
|
}
|
|
215
261
|
finally {
|
|
216
262
|
setLoading(false);
|
|
@@ -219,7 +265,7 @@ function useTeamworkAuth(config) {
|
|
|
219
265
|
// Always validate with server - httpOnly cookies are handled automatically by browser
|
|
220
266
|
checkAuth();
|
|
221
267
|
}, [authServiceUrl]); // Add authServiceUrl as dependency
|
|
222
|
-
return { user, setUser, loading, isAuthenticated, login, logout };
|
|
268
|
+
return { user, setUser, loading, isAuthenticated, login, logout, error, authServiceUrl };
|
|
223
269
|
}
|
|
224
270
|
|
|
225
271
|
function Login({ clientID, redirectURI, clientSecret } = {}) {
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/utils/polyfills.ts","../src/hooks/useTeamworkAuth.ts","../src/components/Login.tsx","../src/providers/AuthProvider.tsx"],"sourcesContent":[null,null,null,null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/utils/polyfills.ts","../src/hooks/useTeamworkAuth.ts","../src/components/Login.tsx","../src/providers/AuthProvider.tsx"],"sourcesContent":[null,null,null,null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mavenmm/teamwork-auth",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "Centralized Teamwork SSO authentication system for React applications with zero backend code required",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.esm.js",
|
|
@@ -26,23 +26,18 @@
|
|
|
26
26
|
"test:watch": "jest --watch",
|
|
27
27
|
"type-check": "tsc --noEmit",
|
|
28
28
|
"prepare": "npm run build",
|
|
29
|
-
"prepublishOnly": "npm run type-check && npm run build"
|
|
30
|
-
"test:local": "npm run build && concurrently \"npm run test:auth-service\" \"npm run test:app\"",
|
|
31
|
-
"test:auth-service": "cd auth-service && npm install && npm run dev",
|
|
32
|
-
"test:app": "cd test-app && npm install && npm run dev",
|
|
33
|
-
"test:setup": "npm run build && cd test-app && npm install"
|
|
29
|
+
"prepublishOnly": "npm run type-check && npm run build"
|
|
34
30
|
},
|
|
35
31
|
"keywords": [
|
|
36
|
-
"
|
|
32
|
+
"teamwork",
|
|
37
33
|
"sso",
|
|
38
34
|
"authentication",
|
|
39
35
|
"react",
|
|
40
36
|
"netlify",
|
|
41
|
-
"teamwork",
|
|
42
37
|
"oauth",
|
|
43
38
|
"typescript"
|
|
44
39
|
],
|
|
45
|
-
"author": "
|
|
40
|
+
"author": "",
|
|
46
41
|
"license": "ISC",
|
|
47
42
|
"publishConfig": {
|
|
48
43
|
"access": "public"
|
package/CHANGELOG.md
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [Unreleased]
|
|
9
|
-
|
|
10
|
-
### Added
|
|
11
|
-
- Initial project setup
|
|
12
|
-
- TypeScript configuration
|
|
13
|
-
- React SSO Provider component
|
|
14
|
-
- Authentication hooks and utilities
|
|
15
|
-
- Netlify Functions helpers
|
|
16
|
-
- Comprehensive documentation
|
|
17
|
-
|
|
18
|
-
## [1.0.0] - 2024-01-XX
|
|
19
|
-
|
|
20
|
-
### Added
|
|
21
|
-
- 🎉 Initial release of Maven Marketing SSO package
|
|
22
|
-
- 🔐 Teamwork OAuth integration
|
|
23
|
-
- ⚛️ React Provider pattern for auth state management
|
|
24
|
-
- 🌐 Netlify Functions support for serverless backend
|
|
25
|
-
- 🔒 Full TypeScript support with type definitions
|
|
26
|
-
- 🎯 Role-based access control
|
|
27
|
-
- 🔄 Automatic token refresh functionality
|
|
28
|
-
- 📱 Ready-to-use authentication components
|
|
29
|
-
- 🛡️ Secure token storage with fallback mechanisms
|
|
30
|
-
- 📚 Comprehensive documentation and examples
|
|
31
|
-
|
|
32
|
-
### Components
|
|
33
|
-
- `SSOProvider` - Main authentication provider
|
|
34
|
-
- `LoginButton` - Customizable login button
|
|
35
|
-
- `LogoutButton` - Logout functionality
|
|
36
|
-
- `ProtectedRoute` - Route protection with role/permission checks
|
|
37
|
-
|
|
38
|
-
### Hooks
|
|
39
|
-
- `useAuth` - Main authentication hook
|
|
40
|
-
- `useSSOContext` - Direct context access
|
|
41
|
-
|
|
42
|
-
### Utilities
|
|
43
|
-
- `createSSOClient` - SSO client factory
|
|
44
|
-
- `createAuthHandler` - Netlify auth handler
|
|
45
|
-
- `createCallbackHandler` - OAuth callback handler
|
|
46
|
-
- `createTokenRefreshHandler` - Token refresh handler
|
|
47
|
-
|
|
48
|
-
### Security Features
|
|
49
|
-
- Secure cookie storage with localStorage fallback
|
|
50
|
-
- CORS handling for Netlify Functions
|
|
51
|
-
- Token expiration management
|
|
52
|
-
- Automatic token refresh
|
|
53
|
-
|
|
54
|
-
[Unreleased]: https://github.com/your-username/mavenmm-tw-netlify-react-sso/compare/v1.0.0...HEAD
|
|
55
|
-
[1.0.0]: https://github.com/your-username/mavenmm-tw-netlify-react-sso/releases/tag/v1.0.0
|
package/README.md
DELETED
|
@@ -1,403 +0,0 @@
|
|
|
1
|
-
# Teamwork Auth 🚀 v2.0
|
|
2
|
-
|
|
3
|
-
A centralized React package for Teamwork authentication using an external auth service. **No more copying auth logic between apps!**
|
|
4
|
-
|
|
5
|
-
## Architecture (v2.0) - Centralized SSO System
|
|
6
|
-
|
|
7
|
-
```mermaid
|
|
8
|
-
graph TB
|
|
9
|
-
A[app1.mavenmm.com] --> D[auth.mavenmm.com]
|
|
10
|
-
B[admin.mavenmm.com] --> D
|
|
11
|
-
C[dashboard.mavenmm.com] --> D
|
|
12
|
-
D --> E[Teamwork API]
|
|
13
|
-
|
|
14
|
-
A -.->|Shared Cookies| B
|
|
15
|
-
B -.->|Shared Cookies| C
|
|
16
|
-
A -.->|Shared Cookies| C
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
### Components:
|
|
20
|
-
1. **Frontend Package** (`@mavenmm/teamwork-auth`): React components and hooks for any Maven app
|
|
21
|
-
2. **Centralized Auth Service** (`auth.mavenmm.com`): Handles all authentication logic and Teamwork API communication
|
|
22
|
-
3. **Maven Apps** (`*.mavenmm.com`): Your applications that need authentication
|
|
23
|
-
|
|
24
|
-
### Benefits:
|
|
25
|
-
- **🔒 Security**: Teamwork API tokens isolated to auth service only
|
|
26
|
-
- **🚀 Zero Backend**: Apps just install npm package - no server code needed
|
|
27
|
-
- **🌐 SSO**: Login once, authenticated across all `*.mavenmm.com` apps
|
|
28
|
-
- **🔧 Maintainable**: Update auth logic in one place for all apps
|
|
29
|
-
- **⚡ Fast Setup**: New apps get auth in minutes, not hours
|
|
30
|
-
|
|
31
|
-
## Installation
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
npm install @mavenmm/teamwork-auth @teamwork/login-button react-router-dom
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Available Exports
|
|
38
|
-
|
|
39
|
-
```tsx
|
|
40
|
-
// React Components & Hooks (v2.0 - Centralized Auth Service)
|
|
41
|
-
import {
|
|
42
|
-
AuthProvider,
|
|
43
|
-
useAuthContext,
|
|
44
|
-
useTeamworkAuth,
|
|
45
|
-
Login,
|
|
46
|
-
type TeamworkAuthConfig
|
|
47
|
-
} from '@mavenmm/teamwork-auth';
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Requirements:**
|
|
51
|
-
- React Router DOM v6+ (peer dependency)
|
|
52
|
-
- External auth service running at `auth.mavenmm.com`
|
|
53
|
-
|
|
54
|
-
## Quick Start (v2.0 - External Auth Service)
|
|
55
|
-
|
|
56
|
-
### 1. Using the hook directly (Recommended)
|
|
57
|
-
```tsx
|
|
58
|
-
import React from 'react';
|
|
59
|
-
import { useTeamworkAuth, Login, type TeamworkAuthConfig } from '@mavenmm/teamwork-auth';
|
|
60
|
-
|
|
61
|
-
const authConfig: TeamworkAuthConfig = {
|
|
62
|
-
authServiceUrl: 'https://auth.mavenmm.com',
|
|
63
|
-
cookieDomain: '.mavenmm.com'
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
function App() {
|
|
67
|
-
const { user, loading, isAuthenticated, logout } = useTeamworkAuth(authConfig);
|
|
68
|
-
|
|
69
|
-
if (loading) {
|
|
70
|
-
return <div>Loading...</div>;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (!isAuthenticated) {
|
|
74
|
-
return <Login />;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return (
|
|
78
|
-
<div>
|
|
79
|
-
<h1>Welcome, {user?.firstName}!</h1>
|
|
80
|
-
<button onClick={logout}>Logout</button>
|
|
81
|
-
</div>
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### 2. Using AuthProvider (Alternative)
|
|
87
|
-
```tsx
|
|
88
|
-
import React from 'react';
|
|
89
|
-
import { BrowserRouter, Routes, Route } from 'react-router-dom';
|
|
90
|
-
import { AuthProvider, useAuthContext } from '@mavenmm/teamwork-auth';
|
|
91
|
-
|
|
92
|
-
function App() {
|
|
93
|
-
return (
|
|
94
|
-
<BrowserRouter>
|
|
95
|
-
<Routes>
|
|
96
|
-
<Route path="/*" element={<AuthenticatedApp />} />
|
|
97
|
-
</Routes>
|
|
98
|
-
</BrowserRouter>
|
|
99
|
-
);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// AuthProvider must be inside Router context (inside a Route element)
|
|
103
|
-
function AuthenticatedApp() {
|
|
104
|
-
return (
|
|
105
|
-
<AuthProvider authServiceUrl="https://auth.mavenmm.com">
|
|
106
|
-
<Routes>
|
|
107
|
-
<Route path="/home" element={<Dashboard />} />
|
|
108
|
-
<Route path="/profile" element={<Profile />} />
|
|
109
|
-
</Routes>
|
|
110
|
-
</AuthProvider>
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
function Dashboard() {
|
|
115
|
-
const { user, loading, isAuthenticated, logout } = useAuthContext();
|
|
116
|
-
|
|
117
|
-
if (loading) return <div>Loading...</div>;
|
|
118
|
-
|
|
119
|
-
return (
|
|
120
|
-
<div>
|
|
121
|
-
<h1>Welcome, {user?.firstName}!</h1>
|
|
122
|
-
<button onClick={logout}>Logout</button>
|
|
123
|
-
</div>
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### 3. No Backend Code Needed! 🎉
|
|
129
|
-
|
|
130
|
-
**That's it!** No Netlify Functions, no environment variables, no backend setup required in your app.
|
|
131
|
-
|
|
132
|
-
The external auth service at `auth.mavenmm.com` handles all the backend logic:
|
|
133
|
-
- Teamwork OAuth flow
|
|
134
|
-
- JWT token management
|
|
135
|
-
- Cookie handling for `.mavenmm.com` subdomains
|
|
136
|
-
- Authentication validation
|
|
137
|
-
|
|
138
|
-
## Cookie Domain Configuration 🍪
|
|
139
|
-
|
|
140
|
-
For subdomain sharing (e.g., sharing auth between `app.yourdomain.com` and `admin.yourdomain.com`):
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
# In your .env file
|
|
144
|
-
VITE_COOKIE_DOMAIN=.yourdomain.com
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
This allows the authentication cookie to work across all `*.yourdomain.com` subdomains.
|
|
148
|
-
|
|
149
|
-
**Behavior:**
|
|
150
|
-
- **Localhost**: No domain set (works with any localhost port)
|
|
151
|
-
- **Production with VITE_COOKIE_DOMAIN**: Cookie shared across subdomains
|
|
152
|
-
- **Production without VITE_COOKIE_DOMAIN**: Cookie only works on exact domain
|
|
153
|
-
|
|
154
|
-
## Features
|
|
155
|
-
|
|
156
|
-
- 🔐 **Teamwork OAuth** - Uses official Teamwork login button
|
|
157
|
-
- 🍪 **Cookie-based Auth** - Secure authentication with HttpOnly cookies
|
|
158
|
-
- 🌐 **Subdomain Support** - Configurable cookie sharing across subdomains
|
|
159
|
-
- 🔄 **Auto-redirect** - Smart redirect handling between apps
|
|
160
|
-
- 📱 **TypeScript** - Full type safety
|
|
161
|
-
- ⚡ **Netlify Functions** - Ready-to-use serverless auth handlers
|
|
162
|
-
- 🎯 **Vite Optimized** - Built specifically for Vite+React+Netlify stack
|
|
163
|
-
|
|
164
|
-
## Important Notes 📝
|
|
165
|
-
|
|
166
|
-
**Router Requirement**: The `AuthProvider` uses React Router hooks (`useNavigate`, `useLocation`) and must be placed inside a Router context. Specifically, it should be inside a Route element, not as a direct child of `<Router>`.
|
|
167
|
-
|
|
168
|
-
**Environment Variables**: You need both client-side (`VITE_*`) and server-side variables. The client-side variables are for React components, and server-side variables are for Netlify Functions.
|
|
169
|
-
|
|
170
|
-
## API Reference
|
|
171
|
-
|
|
172
|
-
### React Components
|
|
173
|
-
|
|
174
|
-
#### `useTeamworkAuth(config)`
|
|
175
|
-
|
|
176
|
-
```tsx
|
|
177
|
-
const {
|
|
178
|
-
user, // User | null
|
|
179
|
-
setUser, // (user: User | null) => void
|
|
180
|
-
loading, // boolean
|
|
181
|
-
isAuthenticated, // boolean
|
|
182
|
-
login, // (code: string) => Promise<{twUser: User}>
|
|
183
|
-
logout // () => Promise<void>
|
|
184
|
-
} = useTeamworkAuth({
|
|
185
|
-
authServiceUrl: 'https://auth.mavenmm.com',
|
|
186
|
-
cookieDomain: '.mavenmm.com'
|
|
187
|
-
});
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
#### `<Login>`
|
|
191
|
-
|
|
192
|
-
```tsx
|
|
193
|
-
<Login /> // Uses environment variables for configuration
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### Auth Service Endpoints (auth.mavenmm.com)
|
|
197
|
-
|
|
198
|
-
#### `POST /.netlify/functions/login`
|
|
199
|
-
- **Headers**: `code` (OAuth authorization code)
|
|
200
|
-
- **Response**: `{ twUser: User }`
|
|
201
|
-
- **Sets**: `maven_auth_token` cookie (HttpOnly, secure)
|
|
202
|
-
|
|
203
|
-
#### `GET /.netlify/functions/logout`
|
|
204
|
-
- **Response**: `{ success: true }`
|
|
205
|
-
- **Clears**: `maven_auth_token` cookie
|
|
206
|
-
|
|
207
|
-
#### `GET /.netlify/functions/checkAuth`
|
|
208
|
-
- **Response**: `{ authenticated: boolean, userId?: string }`
|
|
209
|
-
- **Validates**: `maven_auth_token` JWT cookie
|
|
210
|
-
|
|
211
|
-
### Types
|
|
212
|
-
|
|
213
|
-
```tsx
|
|
214
|
-
interface User {
|
|
215
|
-
id: string;
|
|
216
|
-
firstName: string;
|
|
217
|
-
lastName: string;
|
|
218
|
-
email: string;
|
|
219
|
-
avatar: string;
|
|
220
|
-
company: {
|
|
221
|
-
id: number;
|
|
222
|
-
name: string;
|
|
223
|
-
logo: string;
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
## Multi-Site Integration Example
|
|
229
|
-
|
|
230
|
-
Adding auth to a new Maven app (e.g., `app1.mavenmm.com`):
|
|
231
|
-
|
|
232
|
-
```tsx
|
|
233
|
-
// Just install and configure - no backend code needed!
|
|
234
|
-
import { useTeamworkAuth, Login } from '@mavenmm/teamwork-auth';
|
|
235
|
-
|
|
236
|
-
const authConfig = {
|
|
237
|
-
authServiceUrl: 'https://auth.mavenmm.com',
|
|
238
|
-
cookieDomain: '.mavenmm.com' // Enables SSO across subdomains
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
function App() {
|
|
242
|
-
const { user, isAuthenticated, logout } = useTeamworkAuth(authConfig);
|
|
243
|
-
|
|
244
|
-
if (!isAuthenticated) return <Login />;
|
|
245
|
-
|
|
246
|
-
return (
|
|
247
|
-
<div>
|
|
248
|
-
<h1>Welcome to app1.mavenmm.com, {user?.firstName}!</h1>
|
|
249
|
-
<button onClick={logout}>Logout</button>
|
|
250
|
-
</div>
|
|
251
|
-
);
|
|
252
|
-
}
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
**That's it!** The user will be automatically authenticated if they're logged in to any other Maven app.
|
|
256
|
-
|
|
257
|
-
## Troubleshooting
|
|
258
|
-
|
|
259
|
-
### Common Issues
|
|
260
|
-
|
|
261
|
-
#### 🚫 "User not authenticated" but should be logged in
|
|
262
|
-
|
|
263
|
-
**Symptoms**: App shows login screen even though user logged in elsewhere
|
|
264
|
-
**Causes**:
|
|
265
|
-
- Incorrect `cookieDomain` configuration
|
|
266
|
-
- App not on `*.mavenmm.com` subdomain
|
|
267
|
-
- Auth service unreachable
|
|
268
|
-
|
|
269
|
-
**Solutions**:
|
|
270
|
-
```tsx
|
|
271
|
-
// 1. Check cookie domain configuration
|
|
272
|
-
const authConfig = {
|
|
273
|
-
cookieDomain: '.mavenmm.com' // Must include the dot!
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
// 2. Verify subdomain
|
|
277
|
-
// ✅ Good: app1.mavenmm.com, admin.mavenmm.com
|
|
278
|
-
// ❌ Bad: app1.mavenmarketing.com, localhost:3000
|
|
279
|
-
|
|
280
|
-
// 3. Test auth service
|
|
281
|
-
fetch('https://auth.mavenmm.com/.netlify/functions/checkAuth')
|
|
282
|
-
.then(res => console.log('Auth service status:', res.status));
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
#### 🔄 Login button doesn't work
|
|
286
|
-
|
|
287
|
-
**Symptoms**: Clicking login does nothing or shows errors
|
|
288
|
-
**Causes**:
|
|
289
|
-
- CORS issues between app and auth service
|
|
290
|
-
- Auth service environment variables missing
|
|
291
|
-
- Teamwork OAuth app misconfigured
|
|
292
|
-
|
|
293
|
-
**Solutions**:
|
|
294
|
-
```bash
|
|
295
|
-
# 1. Check browser console for CORS errors
|
|
296
|
-
# 2. Verify auth service is deployed and accessible
|
|
297
|
-
curl https://auth.mavenmm.com/.netlify/functions/checkAuth
|
|
298
|
-
|
|
299
|
-
# 3. Check Teamwork OAuth app redirect URIs include your app domain
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
#### 🍪 Authentication doesn't persist after page refresh
|
|
303
|
-
|
|
304
|
-
**Symptoms**: User logged out after browser refresh
|
|
305
|
-
**Causes**:
|
|
306
|
-
- Cookies not being set properly
|
|
307
|
-
- Incorrect cookie domain
|
|
308
|
-
- Auth service issues
|
|
309
|
-
|
|
310
|
-
**Solutions**:
|
|
311
|
-
```tsx
|
|
312
|
-
// Check browser dev tools > Application > Cookies
|
|
313
|
-
// Should see 'maven_auth_token' cookie for .mavenmm.com domain
|
|
314
|
-
|
|
315
|
-
// Debug authentication status
|
|
316
|
-
const { user, loading, isAuthenticated } = useTeamworkAuth(authConfig);
|
|
317
|
-
console.log('Auth debug:', { user, loading, isAuthenticated });
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
#### ⚠️ CORS errors in browser console
|
|
321
|
-
|
|
322
|
-
**Symptoms**: Network errors when calling auth service
|
|
323
|
-
**Causes**:
|
|
324
|
-
- Auth service CORS not configured for your domain
|
|
325
|
-
- Using HTTP instead of HTTPS in production
|
|
326
|
-
|
|
327
|
-
**Solutions**:
|
|
328
|
-
```bash
|
|
329
|
-
# 1. Ensure your app domain is added to auth service CORS allowlist
|
|
330
|
-
# 2. Use HTTPS in production (required for cookies)
|
|
331
|
-
# 3. Check Origin header matches your domain exactly
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
#### 🔐 Environment variable issues
|
|
335
|
-
|
|
336
|
-
**Symptoms**: Login process fails with authentication errors
|
|
337
|
-
**Causes**:
|
|
338
|
-
- Missing or incorrect Teamwork OAuth credentials
|
|
339
|
-
- JWT secrets not configured
|
|
340
|
-
|
|
341
|
-
**Solutions**:
|
|
342
|
-
```bash
|
|
343
|
-
# Auth service needs these environment variables:
|
|
344
|
-
VITE_CLIENT_ID=your_teamwork_client_id
|
|
345
|
-
VITE_CLIENT_SECRET=your_teamwork_client_secret
|
|
346
|
-
VITE_REDIRECT_URI=https://your-app-domain.com
|
|
347
|
-
JWT_KEY=secure_random_jwt_secret
|
|
348
|
-
|
|
349
|
-
# Apps only need auth service URL (no secrets):
|
|
350
|
-
const authConfig = {
|
|
351
|
-
authServiceUrl: 'https://auth.mavenmm.com'
|
|
352
|
-
};
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
### Debug Mode
|
|
356
|
-
|
|
357
|
-
Enable detailed logging to troubleshoot issues:
|
|
358
|
-
|
|
359
|
-
```tsx
|
|
360
|
-
// Temporarily add for debugging
|
|
361
|
-
const authConfig = {
|
|
362
|
-
authServiceUrl: 'https://auth.mavenmm.com',
|
|
363
|
-
cookieDomain: '.mavenmm.com',
|
|
364
|
-
debug: true // Enables console logging
|
|
365
|
-
};
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
### Getting Help
|
|
369
|
-
|
|
370
|
-
1. **Check browser console** for error messages
|
|
371
|
-
2. **Verify network requests** in browser dev tools
|
|
372
|
-
3. **Test auth service directly** with curl commands
|
|
373
|
-
4. **Review documentation**:
|
|
374
|
-
- `INTEGRATION.md` - Step-by-step integration guide
|
|
375
|
-
- `SECURITY.md` - Security best practices
|
|
376
|
-
- `DEPLOYMENT.md` - Auth service deployment
|
|
377
|
-
|
|
378
|
-
## Project Structure
|
|
379
|
-
|
|
380
|
-
```
|
|
381
|
-
@mavenmm/teamwork-auth/
|
|
382
|
-
├── src/ # Frontend package source
|
|
383
|
-
│ ├── hooks/
|
|
384
|
-
│ │ └── useTeamworkAuth.ts
|
|
385
|
-
│ ├── components/
|
|
386
|
-
│ │ └── Login.tsx
|
|
387
|
-
│ └── providers/
|
|
388
|
-
│ └── AuthProvider.tsx
|
|
389
|
-
├── auth-service/ # Centralized auth service
|
|
390
|
-
│ ├── functions/
|
|
391
|
-
│ │ ├── login.ts
|
|
392
|
-
│ │ ├── logout.ts
|
|
393
|
-
│ │ └── checkAuth.ts
|
|
394
|
-
│ └── middleware/
|
|
395
|
-
├── test-app/ # Local testing app
|
|
396
|
-
├── INTEGRATION.md # Integration guide
|
|
397
|
-
├── SECURITY.md # Security documentation
|
|
398
|
-
└── DEPLOYMENT.md # Deployment guide
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
---
|
|
402
|
-
|
|
403
|
-
Made with ❤️ by Maven Marketing
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { User } from "../types";
|
|
2
|
-
export interface ExternalAuthConfig {
|
|
3
|
-
authServiceUrl?: string;
|
|
4
|
-
cookieDomain?: string;
|
|
5
|
-
}
|
|
6
|
-
export declare function useTeamworkSSO(config?: ExternalAuthConfig): {
|
|
7
|
-
user: User | null;
|
|
8
|
-
setUser: import("react").Dispatch<import("react").SetStateAction<User | null>>;
|
|
9
|
-
loading: boolean;
|
|
10
|
-
isAuthenticated: boolean;
|
|
11
|
-
login: (code: string) => Promise<{
|
|
12
|
-
twUser: any;
|
|
13
|
-
}>;
|
|
14
|
-
logout: () => Promise<void>;
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=useTeamworkSSO.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTeamworkSSO.d.ts","sourceRoot":"","sources":["../../src/hooks/useTeamworkSSO.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,IAAI,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,MAAM,GAAE,kBAAuB;;;;;kBA+BjC,MAAM;;;;EAmPlC"}
|
package/dist/utils/env.d.ts
DELETED
package/dist/utils/env.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AACA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgCzD;AAGD,wBAAgB,KAAK,IAAI,OAAO,CAgC/B"}
|