@churchapps/apphelper-login 0.4.13
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/README.md +104 -0
- package/dist/LoginPage.d.ts +25 -0
- package/dist/LoginPage.d.ts.map +1 -0
- package/dist/LoginPage.js +248 -0
- package/dist/LoginPage.js.map +1 -0
- package/dist/LogoutPage.d.ts +9 -0
- package/dist/LogoutPage.d.ts.map +1 -0
- package/dist/LogoutPage.js +33 -0
- package/dist/LogoutPage.js.map +1 -0
- package/dist/components/Forgot.d.ts +8 -0
- package/dist/components/Forgot.d.ts.map +1 -0
- package/dist/components/Forgot.js +127 -0
- package/dist/components/Forgot.js.map +1 -0
- package/dist/components/Login.d.ts +15 -0
- package/dist/components/Login.d.ts.map +1 -0
- package/dist/components/Login.js +126 -0
- package/dist/components/Login.js.map +1 -0
- package/dist/components/LoginSetPassword.d.ts +13 -0
- package/dist/components/LoginSetPassword.d.ts.map +1 -0
- package/dist/components/LoginSetPassword.js +167 -0
- package/dist/components/LoginSetPassword.js.map +1 -0
- package/dist/components/Register.d.ts +12 -0
- package/dist/components/Register.d.ts.map +1 -0
- package/dist/components/Register.js +217 -0
- package/dist/components/Register.js.map +1 -0
- package/dist/components/SelectChurchModal.d.ts +14 -0
- package/dist/components/SelectChurchModal.d.ts.map +1 -0
- package/dist/components/SelectChurchModal.js +39 -0
- package/dist/components/SelectChurchModal.js.map +1 -0
- package/dist/components/SelectChurchRegister.d.ts +11 -0
- package/dist/components/SelectChurchRegister.d.ts.map +1 -0
- package/dist/components/SelectChurchRegister.js +83 -0
- package/dist/components/SelectChurchRegister.js.map +1 -0
- package/dist/components/SelectChurchSearch.d.ts +10 -0
- package/dist/components/SelectChurchSearch.d.ts.map +1 -0
- package/dist/components/SelectChurchSearch.js +61 -0
- package/dist/components/SelectChurchSearch.js.map +1 -0
- package/dist/components/SelectableChurch.d.ts +9 -0
- package/dist/components/SelectableChurch.d.ts.map +1 -0
- package/dist/components/SelectableChurch.js +34 -0
- package/dist/components/SelectableChurch.js.map +1 -0
- package/dist/helpers/AnalyticsHelper.d.ts +7 -0
- package/dist/helpers/AnalyticsHelper.d.ts.map +1 -0
- package/dist/helpers/AnalyticsHelper.js +30 -0
- package/dist/helpers/AnalyticsHelper.js.map +1 -0
- package/dist/helpers/Locale.d.ts +13 -0
- package/dist/helpers/Locale.d.ts.map +1 -0
- package/dist/helpers/Locale.js +200 -0
- package/dist/helpers/Locale.js.map +1 -0
- package/dist/helpers/index.d.ts +3 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +3 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -0
- package/src/LoginPage.tsx +283 -0
- package/src/LogoutPage.tsx +43 -0
- package/src/components/Forgot.tsx +247 -0
- package/src/components/Login.tsx +250 -0
- package/src/components/LoginSetPassword.tsx +298 -0
- package/src/components/Register.tsx +371 -0
- package/src/components/SelectChurchModal.tsx +82 -0
- package/src/components/SelectChurchRegister.tsx +88 -0
- package/src/components/SelectChurchSearch.tsx +85 -0
- package/src/components/SelectableChurch.tsx +72 -0
- package/src/helpers/AnalyticsHelper.ts +32 -0
- package/src/helpers/Locale.ts +233 -0
- package/src/helpers/index.ts +2 -0
- package/src/index.ts +10 -0
- package/tsconfig.json +30 -0
package/README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# @churchapps/apphelper-login
|
|
2
|
+
|
|
3
|
+
Login and authentication components for ChurchApps applications.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **LoginPage** - Complete login page with tabs for login, register, and forgot password
|
|
8
|
+
- **Login** - Simple login form component
|
|
9
|
+
- **Register** - User registration form
|
|
10
|
+
- **Forgot** - Password recovery form
|
|
11
|
+
- **LoginSetPassword** - Password reset component
|
|
12
|
+
- **SelectChurchSearch** - Church search functionality
|
|
13
|
+
- **SelectChurchRegister** - New church registration
|
|
14
|
+
- **SelectChurchModal** - Church selection modal
|
|
15
|
+
|
|
16
|
+
## Language Support
|
|
17
|
+
|
|
18
|
+
The components include built-in English fallback values for all labels, ensuring they work even without language files present.
|
|
19
|
+
|
|
20
|
+
### Internationalization (i18n)
|
|
21
|
+
|
|
22
|
+
The components support full internationalization through language files. When language files are available, they will be used automatically. If no language files are found, the components fall back to English labels.
|
|
23
|
+
|
|
24
|
+
#### Supported Languages
|
|
25
|
+
- English (en) - Built-in fallbacks
|
|
26
|
+
- German (de)
|
|
27
|
+
- Spanish (es)
|
|
28
|
+
- French (fr)
|
|
29
|
+
- Hindi (hi)
|
|
30
|
+
- Italian (it)
|
|
31
|
+
- Korean (ko)
|
|
32
|
+
- Norwegian (no)
|
|
33
|
+
- Portuguese (pt)
|
|
34
|
+
- Russian (ru)
|
|
35
|
+
- Tagalog (tl)
|
|
36
|
+
- Chinese (zh)
|
|
37
|
+
|
|
38
|
+
#### Using with Language Files
|
|
39
|
+
|
|
40
|
+
```javascript
|
|
41
|
+
import { Locale } from '@churchapps/apphelper-login';
|
|
42
|
+
|
|
43
|
+
// Initialize with language backends
|
|
44
|
+
await Locale.init([
|
|
45
|
+
'/locales/{{lng}}.json',
|
|
46
|
+
'https://api.example.com/translations/{{lng}}.json'
|
|
47
|
+
]);
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
#### Using Without Language Files
|
|
51
|
+
|
|
52
|
+
The components work automatically without any setup - they use English fallbacks:
|
|
53
|
+
|
|
54
|
+
```javascript
|
|
55
|
+
import { LoginPage } from '@churchapps/apphelper-login';
|
|
56
|
+
|
|
57
|
+
// No language initialization needed - fallbacks are automatic
|
|
58
|
+
<LoginPage {...props} />
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Installation
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npm install @churchapps/apphelper-login
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Dependencies
|
|
68
|
+
|
|
69
|
+
- `@churchapps/helpers` - Core utilities and interfaces
|
|
70
|
+
- `@churchapps/apphelper` - UI components (InputBox, ErrorMessages, etc.)
|
|
71
|
+
- React 19+
|
|
72
|
+
- Material-UI 7+
|
|
73
|
+
- i18next (for internationalization)
|
|
74
|
+
|
|
75
|
+
## Usage
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
import { LoginPage, Login, Register } from '@churchapps/apphelper-login';
|
|
79
|
+
|
|
80
|
+
// Full login page
|
|
81
|
+
<LoginPage
|
|
82
|
+
context={userContext}
|
|
83
|
+
appName="My App"
|
|
84
|
+
appUrl={window.location.href}
|
|
85
|
+
handleRedirect={(url) => navigate(url)}
|
|
86
|
+
/>
|
|
87
|
+
|
|
88
|
+
// Simple login form
|
|
89
|
+
<Login
|
|
90
|
+
context={userContext}
|
|
91
|
+
appName="My App"
|
|
92
|
+
onSuccess={() => console.log('Success')}
|
|
93
|
+
/>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Playground
|
|
97
|
+
|
|
98
|
+
A development playground is available for testing components:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npm run test:login
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
This will start a browser-based playground where you can interact with all components.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { UserContextInterface, ChurchInterface, UserInterface } from "@churchapps/helpers";
|
|
3
|
+
import { PaperProps } from "@mui/material";
|
|
4
|
+
interface Props {
|
|
5
|
+
context: UserContextInterface;
|
|
6
|
+
jwt: string;
|
|
7
|
+
auth: string;
|
|
8
|
+
keyName?: string;
|
|
9
|
+
logo?: string;
|
|
10
|
+
appName?: string;
|
|
11
|
+
appUrl?: string;
|
|
12
|
+
returnUrl?: string;
|
|
13
|
+
loginSuccessOverride?: () => void;
|
|
14
|
+
userRegisteredCallback?: (user: UserInterface) => Promise<void>;
|
|
15
|
+
churchRegisteredCallback?: (church: ChurchInterface) => Promise<void>;
|
|
16
|
+
callbackErrors?: string[];
|
|
17
|
+
showLogo?: boolean;
|
|
18
|
+
loginContainerCssProps?: PaperProps;
|
|
19
|
+
defaultEmail?: string;
|
|
20
|
+
defaultPassword?: string;
|
|
21
|
+
handleRedirect?: (url: string) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare const LoginPage: React.FC<Props>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=LoginPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoginPage.d.ts","sourceRoot":"","sources":["../src/LoginPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAA0B,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAA4B,MAAM,qBAAqB,CAAC;AAQ7I,OAAO,EAAc,UAAU,EAAc,MAAM,eAAe,CAAC;AAKnE,UAAU,KAAK;IACd,OAAO,EAAE,oBAAoB,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB,CAAC,EAAE,UAAU,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AA4OD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAWrC,CAAC"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { ErrorMessages, FloatingSupport, Loading } from "@churchapps/apphelper";
|
|
5
|
+
import { ApiHelper, ArrayHelper, UserHelper, CommonEnvironmentHelper } from "@churchapps/helpers";
|
|
6
|
+
import { AnalyticsHelper, Locale } from "./helpers";
|
|
7
|
+
import { useCookies, CookiesProvider } from "react-cookie";
|
|
8
|
+
import { jwtDecode } from "jwt-decode";
|
|
9
|
+
import { Register } from "./components/Register";
|
|
10
|
+
import { SelectChurchModal } from "./components/SelectChurchModal";
|
|
11
|
+
import { Forgot } from "./components/Forgot";
|
|
12
|
+
import { Alert, Box, Typography } from "@mui/material";
|
|
13
|
+
import { Login } from "./components/Login";
|
|
14
|
+
import { LoginSetPassword } from "./components/LoginSetPassword";
|
|
15
|
+
import ga4 from "react-ga4";
|
|
16
|
+
const LoginPageContent = ({ showLogo = true, loginContainerCssProps, ...props }) => {
|
|
17
|
+
const [welcomeBackName, setWelcomeBackName] = React.useState("");
|
|
18
|
+
const [pendingAutoLogin, setPendingAutoLogin] = React.useState(false);
|
|
19
|
+
const [errors, setErrors] = React.useState([]);
|
|
20
|
+
const [cookies, setCookie] = useCookies(["jwt", "name", "email", "lastChurchId"]);
|
|
21
|
+
const [showForgot, setShowForgot] = React.useState(false);
|
|
22
|
+
const [showRegister, setShowRegister] = React.useState(false);
|
|
23
|
+
const [showSelectModal, setShowSelectModal] = React.useState(false);
|
|
24
|
+
const [loginResponse, setLoginResponse] = React.useState(null);
|
|
25
|
+
const [userJwt, setUserJwt] = React.useState("");
|
|
26
|
+
const [isSubmitting, setIsSubmitting] = React.useState(false);
|
|
27
|
+
const loginFormRef = React.useRef(null);
|
|
28
|
+
const location = typeof window !== "undefined" && window.location;
|
|
29
|
+
let selectedChurchId = "";
|
|
30
|
+
let registeredChurch = null;
|
|
31
|
+
let userJwtBackup = ""; //use state copy for storing between page updates. This copy for instant availability.
|
|
32
|
+
const cleanAppUrl = () => {
|
|
33
|
+
if (!props.appUrl)
|
|
34
|
+
return null;
|
|
35
|
+
else {
|
|
36
|
+
const index = props.appUrl.indexOf("/", 9);
|
|
37
|
+
if (index === -1)
|
|
38
|
+
return props.appUrl;
|
|
39
|
+
else
|
|
40
|
+
return props.appUrl.substring(0, index);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
React.useEffect(() => {
|
|
44
|
+
if (props.callbackErrors?.length > 0) {
|
|
45
|
+
setErrors(props.callbackErrors);
|
|
46
|
+
}
|
|
47
|
+
}, [props.callbackErrors]);
|
|
48
|
+
const init = () => {
|
|
49
|
+
const search = new URLSearchParams(location?.search);
|
|
50
|
+
const action = search.get("action");
|
|
51
|
+
if (action === "forgot")
|
|
52
|
+
setShowForgot(true);
|
|
53
|
+
else if (action === "register")
|
|
54
|
+
setShowRegister(true);
|
|
55
|
+
else {
|
|
56
|
+
if (!props.auth && props.jwt) {
|
|
57
|
+
setWelcomeBackName(cookies.name);
|
|
58
|
+
login({ jwt: props.jwt });
|
|
59
|
+
setPendingAutoLogin(true);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
setPendingAutoLogin(false);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const handleLoginSuccess = async (resp) => {
|
|
67
|
+
userJwtBackup = resp.user.jwt;
|
|
68
|
+
setUserJwt(userJwtBackup);
|
|
69
|
+
ApiHelper.setDefaultPermissions(resp.user.jwt);
|
|
70
|
+
setLoginResponse(resp);
|
|
71
|
+
resp.userChurches.forEach(uc => { if (!uc.apis)
|
|
72
|
+
uc.apis = []; });
|
|
73
|
+
UserHelper.userChurches = resp.userChurches;
|
|
74
|
+
setCookie("name", `${resp.user.firstName} ${resp.user.lastName}`, { path: "/" });
|
|
75
|
+
setCookie("email", resp.user.email, { path: "/" });
|
|
76
|
+
UserHelper.user = resp.user;
|
|
77
|
+
if (props.jwt) {
|
|
78
|
+
const decoded = jwtDecode(userJwtBackup);
|
|
79
|
+
selectedChurchId = decoded.churchId;
|
|
80
|
+
}
|
|
81
|
+
const search = new URLSearchParams(location?.search);
|
|
82
|
+
const churchIdInParams = search.get("churchId");
|
|
83
|
+
if (props.keyName)
|
|
84
|
+
selectChurchByKeyName();
|
|
85
|
+
else if (selectedChurchId)
|
|
86
|
+
selectChurchById();
|
|
87
|
+
else if (churchIdInParams)
|
|
88
|
+
selectChurch(churchIdInParams);
|
|
89
|
+
else if (props.jwt && cookies.lastChurchId && ArrayHelper.getOne(resp.userChurches, "church.id", cookies.lastChurchId)) {
|
|
90
|
+
selectedChurchId = cookies.lastChurchId;
|
|
91
|
+
selectChurchById();
|
|
92
|
+
}
|
|
93
|
+
else
|
|
94
|
+
setShowSelectModal(true);
|
|
95
|
+
};
|
|
96
|
+
const selectChurchById = async () => {
|
|
97
|
+
await UserHelper.selectChurch(props.context, selectedChurchId, undefined);
|
|
98
|
+
setCookie("lastChurchId", selectedChurchId, { path: "/" });
|
|
99
|
+
if (registeredChurch) {
|
|
100
|
+
AnalyticsHelper.logEvent("Church", "Register", UserHelper.currentUserChurch.church.name);
|
|
101
|
+
try {
|
|
102
|
+
if (CommonEnvironmentHelper.GoogleAnalyticsTag && typeof (window) !== "undefined") {
|
|
103
|
+
ga4.gtag("event", "conversion", { send_to: "AW-427967381/Ba2qCLrXgJoYEJWHicwB" });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch { }
|
|
107
|
+
}
|
|
108
|
+
else
|
|
109
|
+
AnalyticsHelper.logEvent("Church", "Select", UserHelper.currentUserChurch.church.name);
|
|
110
|
+
if (props.churchRegisteredCallback && registeredChurch) {
|
|
111
|
+
await props.churchRegisteredCallback(registeredChurch);
|
|
112
|
+
registeredChurch = null;
|
|
113
|
+
login({ jwt: userJwt || userJwtBackup });
|
|
114
|
+
}
|
|
115
|
+
else
|
|
116
|
+
await continueLoginProcess();
|
|
117
|
+
};
|
|
118
|
+
const selectChurchByKeyName = async () => {
|
|
119
|
+
if (!ArrayHelper.getOne(UserHelper.userChurches, "church.subDomain", props.keyName)) {
|
|
120
|
+
const userChurch = await ApiHelper.post("/churches/select", { subDomain: props.keyName }, "MembershipApi");
|
|
121
|
+
UserHelper.setupApiHelper(userChurch);
|
|
122
|
+
setCookie("lastChurchId", userChurch.church.id, { path: "/" });
|
|
123
|
+
//create/claim the person record and relogin
|
|
124
|
+
await ApiHelper.get("/people/claim/" + userChurch.church.id, "MembershipApi");
|
|
125
|
+
login({ jwt: userJwt || userJwtBackup });
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
await UserHelper.selectChurch(props.context, undefined, props.keyName);
|
|
129
|
+
const selectedChurch = ArrayHelper.getOne(UserHelper.userChurches, "church.subDomain", props.keyName);
|
|
130
|
+
if (selectedChurch)
|
|
131
|
+
setCookie("lastChurchId", selectedChurch.church.id, { path: "/" });
|
|
132
|
+
await continueLoginProcess();
|
|
133
|
+
return;
|
|
134
|
+
};
|
|
135
|
+
async function continueLoginProcess() {
|
|
136
|
+
if (UserHelper.currentUserChurch) {
|
|
137
|
+
UserHelper.currentUserChurch.apis.forEach(api => {
|
|
138
|
+
if (api.keyName === "MembershipApi")
|
|
139
|
+
setCookie("jwt", api.jwt, { path: "/" });
|
|
140
|
+
});
|
|
141
|
+
try {
|
|
142
|
+
if (UserHelper.currentUserChurch.church.id)
|
|
143
|
+
ApiHelper.patch(`/userChurch/${UserHelper.user.id}`, { churchId: UserHelper.currentUserChurch.church.id, appName: props.appName, lastAccessed: new Date() }, "MembershipApi");
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
console.log("Could not update user church accessed date");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (props.loginSuccessOverride !== undefined)
|
|
150
|
+
props.loginSuccessOverride();
|
|
151
|
+
else {
|
|
152
|
+
props.context.setUser(UserHelper.user);
|
|
153
|
+
props.context.setUserChurches(UserHelper.userChurches);
|
|
154
|
+
props.context.setUserChurch(UserHelper.currentUserChurch);
|
|
155
|
+
try {
|
|
156
|
+
const p = await ApiHelper.get(`/people/${UserHelper.currentUserChurch.person?.id}`, "MembershipApi");
|
|
157
|
+
if (p)
|
|
158
|
+
props.context.setPerson(p);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
console.log("claiming person");
|
|
162
|
+
const personClaim = await ApiHelper.get("/people/claim/" + UserHelper.currentUserChurch.church.id, "MembershipApi");
|
|
163
|
+
props.context.setPerson(personClaim);
|
|
164
|
+
}
|
|
165
|
+
const search = new URLSearchParams(location?.search);
|
|
166
|
+
const returnUrl = search.get("returnUrl") || props.returnUrl;
|
|
167
|
+
if (returnUrl && typeof window !== "undefined") {
|
|
168
|
+
// Use handleRedirect function if available, otherwise fallback to window.location
|
|
169
|
+
if (props.handleRedirect) {
|
|
170
|
+
props.handleRedirect(returnUrl);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
window.location.href = returnUrl;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async function selectChurch(churchId) {
|
|
179
|
+
try {
|
|
180
|
+
setErrors([]);
|
|
181
|
+
selectedChurchId = churchId;
|
|
182
|
+
setCookie("lastChurchId", churchId, { path: "/" });
|
|
183
|
+
if (!ArrayHelper.getOne(UserHelper.userChurches, "church.id", churchId)) {
|
|
184
|
+
const userChurch = await ApiHelper.post("/churches/select", { churchId: churchId }, "MembershipApi");
|
|
185
|
+
UserHelper.setupApiHelper(userChurch);
|
|
186
|
+
//create/claim the person record and relogin
|
|
187
|
+
await ApiHelper.get("/people/claim/" + churchId, "MembershipApi");
|
|
188
|
+
login({ jwt: userJwt || userJwtBackup });
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
UserHelper.selectChurch(props.context, churchId, null).then(() => { continueLoginProcess(); });
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
console.log("Error in selecting church: ", err);
|
|
195
|
+
setErrors([Locale.label("login.validate.selectingChurch")]);
|
|
196
|
+
loginFormRef?.current?.setSubmitting(false);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const handleLoginErrors = (errors) => {
|
|
200
|
+
setWelcomeBackName("");
|
|
201
|
+
console.log(errors);
|
|
202
|
+
setErrors([Locale.label("login.validate.invalid")]);
|
|
203
|
+
};
|
|
204
|
+
const login = async (data) => {
|
|
205
|
+
setErrors([]);
|
|
206
|
+
setIsSubmitting(true);
|
|
207
|
+
try {
|
|
208
|
+
const resp = await ApiHelper.postAnonymous("/users/login", data, "MembershipApi");
|
|
209
|
+
setIsSubmitting(false);
|
|
210
|
+
handleLoginSuccess(resp);
|
|
211
|
+
}
|
|
212
|
+
catch (e) {
|
|
213
|
+
setPendingAutoLogin(false);
|
|
214
|
+
if (!data.jwt)
|
|
215
|
+
handleLoginErrors([e.toString()]);
|
|
216
|
+
else
|
|
217
|
+
setWelcomeBackName("");
|
|
218
|
+
setIsSubmitting(false);
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
const getWelcomeBack = () => { if (welcomeBackName !== "")
|
|
222
|
+
return (_jsxs(_Fragment, { children: [_jsx(Alert, { severity: "info", children: _jsx("div", { dangerouslySetInnerHTML: { __html: Locale.label("login.welcomeName")?.replace("{}", welcomeBackName) } }) }), _jsx(Loading, {})] })); };
|
|
223
|
+
const getCheckEmail = () => { if (new URLSearchParams(location?.search).get("checkEmail") === "1")
|
|
224
|
+
return _jsx(Alert, { severity: "info", children: Locale.label("login.registerThankYou") }); };
|
|
225
|
+
const handleRegisterCallback = () => { setShowForgot(false); setShowRegister(true); };
|
|
226
|
+
const handleLoginCallback = () => { setShowForgot(false); setShowRegister(false); };
|
|
227
|
+
const handleChurchRegistered = (church) => { registeredChurch = church; setShowRegister(false); console.log("Updated VERSION********"); };
|
|
228
|
+
const getInputBox = () => {
|
|
229
|
+
if (showRegister)
|
|
230
|
+
return (_jsxs(Box, { id: "loginBox", sx: { backgroundColor: "#FFF", border: "1px solid #CCC", borderRadius: "5px", padding: "20px" }, children: [_jsx(Typography, { component: "h2", sx: { fontSize: "32px", fontWeight: 500, lineHeight: 1.2, margin: "0 0 8px 0" }, children: Locale.label("login.createAccount") }), _jsx(Register, { updateErrors: setErrors, appName: props.appName, appUrl: cleanAppUrl(), loginCallback: handleLoginCallback, userRegisteredCallback: props.userRegisteredCallback })] }));
|
|
231
|
+
else if (showForgot)
|
|
232
|
+
return (_jsx(Forgot, { registerCallback: handleRegisterCallback, loginCallback: handleLoginCallback }));
|
|
233
|
+
else if (props.auth)
|
|
234
|
+
return (_jsx(LoginSetPassword, { setErrors: setErrors, setShowForgot: setShowForgot, isSubmitting: isSubmitting, auth: props.auth, login: login, appName: props.appName, appUrl: cleanAppUrl() }));
|
|
235
|
+
else
|
|
236
|
+
return _jsx(Login, { setShowRegister: setShowRegister, setShowForgot: setShowForgot, setErrors: setErrors, isSubmitting: isSubmitting, login: login, mainContainerCssProps: loginContainerCssProps, defaultEmail: props.defaultEmail, defaultPassword: props.defaultPassword });
|
|
237
|
+
};
|
|
238
|
+
React.useEffect(init, []); //eslint-disable-line
|
|
239
|
+
return (_jsxs(_Fragment, { children: [_jsx(ErrorMessages, { errors: errors }), getWelcomeBack(), getCheckEmail(), !pendingAutoLogin && getInputBox(), _jsx(SelectChurchModal, { show: showSelectModal, userChurches: loginResponse?.userChurches, selectChurch: selectChurch, registeredChurchCallback: handleChurchRegistered, errors: errors, appName: props.appName }), _jsx(FloatingSupport, { appName: props.appName })] }));
|
|
240
|
+
};
|
|
241
|
+
export const LoginPage = (props) => {
|
|
242
|
+
// Try to detect if CookiesProvider is available
|
|
243
|
+
const CookiesContext = React.createContext(null);
|
|
244
|
+
const context = React.useContext(CookiesContext);
|
|
245
|
+
// Always wrap with CookiesProvider to ensure context is available
|
|
246
|
+
return (_jsx(CookiesProvider, { defaultSetOptions: { path: '/' }, children: _jsx(LoginPageContent, { ...props }) }));
|
|
247
|
+
};
|
|
248
|
+
//# sourceMappingURL=LoginPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoginPage.js","sourceRoot":"","sources":["../src/LoginPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { UserContextInterface } from "@churchapps/helpers";
|
|
3
|
+
interface Props {
|
|
4
|
+
context?: UserContextInterface;
|
|
5
|
+
handleRedirect?: (url: string) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const LogoutPage: React.FC<Props>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=LogoutPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogoutPage.d.ts","sourceRoot":"","sources":["../src/LogoutPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAa,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,UAAU,KAAK;IAAG,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE;AA8B1F,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAMtC,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useCookies, CookiesProvider } from "react-cookie";
|
|
4
|
+
import { ApiHelper } from "@churchapps/helpers";
|
|
5
|
+
const LogoutPageContent = (props) => {
|
|
6
|
+
const [, , removeCookie] = useCookies(["jwt", "email", "name", "lastChurchId"]);
|
|
7
|
+
removeCookie("jwt");
|
|
8
|
+
removeCookie("email");
|
|
9
|
+
removeCookie("name");
|
|
10
|
+
removeCookie("lastChurchId");
|
|
11
|
+
ApiHelper.clearPermissions();
|
|
12
|
+
props.context?.setUser(null);
|
|
13
|
+
props.context?.setPerson(null);
|
|
14
|
+
props.context?.setUserChurches(null);
|
|
15
|
+
props.context?.setUserChurch(null);
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
// a must check for Nextjs
|
|
18
|
+
if (typeof window !== "undefined") {
|
|
19
|
+
// Use handleRedirect function if available, otherwise fallback to window.location
|
|
20
|
+
if (props.handleRedirect) {
|
|
21
|
+
props.handleRedirect("/");
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
window.location.href = "/";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}, 300);
|
|
28
|
+
return null;
|
|
29
|
+
};
|
|
30
|
+
export const LogoutPage = (props) => {
|
|
31
|
+
return (_jsx(CookiesProvider, { defaultSetOptions: { path: '/' }, children: _jsx(LogoutPageContent, { ...props }) }));
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=LogoutPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogoutPage.js","sourceRoot":"","sources":["../src/LogoutPage.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAwB,MAAM,qBAAqB,CAAC;AAItE,MAAM,iBAAiB,GAAoB,CAAC,KAAK,EAAE,EAAE;IACpD,MAAM,CAAC,EAAE,AAAD,EAAG,YAAY,CAAC,GAAG,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAEhF,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,YAAY,CAAC,OAAO,CAAC,CAAC;IACtB,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,YAAY,CAAC,cAAc,CAAC,CAAC;IAE7B,SAAS,CAAC,gBAAgB,EAAE,CAAC;IAC7B,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAEnC,UAAU,CAAC,GAAG,EAAE;QACf,0BAA0B;QAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YACnC,kFAAkF;YAClF,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1B,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;YAC5B,CAAC;QACF,CAAC;IACF,CAAC,EAAE,GAAG,CAAC,CAAC;IACR,OAAO,IAAI,CAAC;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAoB,CAAC,KAAK,EAAE,EAAE;IACpD,OAAO,CACN,KAAC,eAAe,IAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,YAChD,KAAC,iBAAiB,OAAK,KAAK,GAAI,GACf,CAClB,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Forgot.d.ts","sourceRoot":"","sources":["../../src/components/Forgot.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAMhD,UAAU,KAAK;IACb,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAyOlC,CAAA"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { ApiHelper } from "@churchapps/helpers";
|
|
5
|
+
import { Locale } from "../helpers";
|
|
6
|
+
import { TextField, Typography, Card, CardContent, Button } from "@mui/material";
|
|
7
|
+
export const Forgot = props => {
|
|
8
|
+
const [errors, setErrors] = React.useState([]);
|
|
9
|
+
const [successMessage, setSuccessMessage] = React.useState(null);
|
|
10
|
+
const [email, setEmail] = React.useState("");
|
|
11
|
+
const [isSubmitting, setIsSubmitting] = React.useState(false);
|
|
12
|
+
const handleChange = (e) => {
|
|
13
|
+
setEmail(e.target.value);
|
|
14
|
+
};
|
|
15
|
+
const validateEmail = (email) => (/^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(email));
|
|
16
|
+
const validate = () => {
|
|
17
|
+
const result = [];
|
|
18
|
+
if (!email)
|
|
19
|
+
result.push(Locale.label("login.validate.email"));
|
|
20
|
+
else if (!validateEmail(email))
|
|
21
|
+
result.push(Locale.label("login.validate.email"));
|
|
22
|
+
setErrors(result);
|
|
23
|
+
return result.length === 0;
|
|
24
|
+
};
|
|
25
|
+
const reset = (e) => {
|
|
26
|
+
e.preventDefault();
|
|
27
|
+
if (validate()) {
|
|
28
|
+
setIsSubmitting(true);
|
|
29
|
+
let req = { userEmail: email };
|
|
30
|
+
ApiHelper.postAnonymous("/users/forgot", req, "MembershipApi").then((resp) => {
|
|
31
|
+
if (resp.emailed) {
|
|
32
|
+
setErrors([]);
|
|
33
|
+
setSuccessMessage(_jsxs(Typography, { textAlign: "center", marginTop: "35px", children: [Locale.label("login.resetSent"), " ", _jsx("br", {}), _jsx("br", {}), _jsx("button", { style: {
|
|
34
|
+
background: 'none',
|
|
35
|
+
border: 'none',
|
|
36
|
+
color: '#3b82f6',
|
|
37
|
+
fontSize: '14px',
|
|
38
|
+
cursor: 'pointer',
|
|
39
|
+
textDecoration: 'none'
|
|
40
|
+
}, onMouseOver: (e) => e.currentTarget.style.textDecoration = 'underline', onMouseOut: (e) => e.currentTarget.style.textDecoration = 'none', onClick: (e) => { e.preventDefault(); props.loginCallback(); }, children: Locale.label("login.goLogin") })] }));
|
|
41
|
+
setEmail("");
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
setErrors(["We could not find an account with this email address"]);
|
|
45
|
+
setSuccessMessage(_jsx(_Fragment, {}));
|
|
46
|
+
}
|
|
47
|
+
}).finally(() => { setIsSubmitting(false); });
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
return (_jsx("div", { style: { minHeight: '100vh', backgroundColor: 'white', display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '16px' }, children: _jsx(Card, { sx: {
|
|
51
|
+
width: '100%',
|
|
52
|
+
maxWidth: { xs: '400px', sm: '500px' },
|
|
53
|
+
backgroundColor: 'white',
|
|
54
|
+
border: '1px solid #e5e7eb',
|
|
55
|
+
boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)'
|
|
56
|
+
}, children: _jsxs(CardContent, { sx: { textAlign: 'center', padding: '32px' }, children: [_jsx("div", { style: { marginBottom: '32px' }, children: _jsx("img", { src: "/images/logo-login.png", alt: "Church Logo", style: {
|
|
57
|
+
maxWidth: '100%',
|
|
58
|
+
width: 'auto',
|
|
59
|
+
height: 'auto',
|
|
60
|
+
maxHeight: '80px',
|
|
61
|
+
marginBottom: '16px',
|
|
62
|
+
objectFit: 'contain'
|
|
63
|
+
} }) }), _jsx(Typography, { component: "h1", sx: {
|
|
64
|
+
fontSize: '24px',
|
|
65
|
+
fontWeight: 'bold',
|
|
66
|
+
color: '#111827',
|
|
67
|
+
marginBottom: '8px'
|
|
68
|
+
}, children: Locale.label("login.resetPassword") }), _jsx(Typography, { sx: {
|
|
69
|
+
color: '#6b7280',
|
|
70
|
+
marginBottom: '32px'
|
|
71
|
+
}, children: "Enter your email to receive password reset instructions" }), _jsxs("form", { onSubmit: reset, style: { display: 'flex', flexDirection: 'column', gap: '16px' }, children: [errors.length > 0 && (_jsx("div", { style: {
|
|
72
|
+
backgroundColor: '#fef2f2',
|
|
73
|
+
border: '1px solid #fecaca',
|
|
74
|
+
borderRadius: '6px',
|
|
75
|
+
padding: '12px',
|
|
76
|
+
textAlign: 'left'
|
|
77
|
+
}, children: errors.map((error, index) => (_jsx("div", { style: { color: '#dc2626', fontSize: '14px' }, children: error }, index))) })), successMessage ? (_jsx("div", { style: { textAlign: 'center', display: 'flex', flexDirection: 'column', gap: '16px' }, children: successMessage })) : (_jsxs(_Fragment, { children: [_jsx(Typography, { variant: "body2", sx: { color: '#6b7280', fontSize: '14px', textAlign: 'left' }, children: Locale.label("login.resetInstructions") }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px' }, children: [_jsx("label", { htmlFor: "forgot-email", style: { fontSize: '14px', fontWeight: 500, color: '#374151', textAlign: 'left' }, children: Locale.label("login.email") }), _jsx(TextField, { id: "forgot-email", name: "forgot-email", type: "email", placeholder: Locale.label("login.email"), value: email, onChange: handleChange, autoFocus: true, required: true, autoComplete: "email", variant: "outlined", fullWidth: true, onKeyDown: (e) => e.key === "Enter" && reset, sx: {
|
|
78
|
+
'& .MuiOutlinedInput-root': {
|
|
79
|
+
backgroundColor: 'white',
|
|
80
|
+
'& fieldset': {
|
|
81
|
+
borderColor: '#d1d5db'
|
|
82
|
+
},
|
|
83
|
+
'&:hover fieldset': {
|
|
84
|
+
borderColor: '#d1d5db'
|
|
85
|
+
},
|
|
86
|
+
'&.Mui-focused fieldset': {
|
|
87
|
+
borderColor: '#3b82f6'
|
|
88
|
+
},
|
|
89
|
+
'& input': {
|
|
90
|
+
color: '#111827',
|
|
91
|
+
fontSize: '16px'
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
'& .MuiInputLabel-root': {
|
|
95
|
+
display: 'none'
|
|
96
|
+
}
|
|
97
|
+
} })] }), _jsx(Button, { type: "submit", variant: "contained", fullWidth: true, disabled: isSubmitting, sx: {
|
|
98
|
+
backgroundColor: 'hsl(218, 85%, 55%)',
|
|
99
|
+
color: 'white',
|
|
100
|
+
padding: '12px',
|
|
101
|
+
textTransform: 'none',
|
|
102
|
+
fontSize: '16px',
|
|
103
|
+
fontWeight: 500,
|
|
104
|
+
borderRadius: '6px',
|
|
105
|
+
'&:hover': {
|
|
106
|
+
backgroundColor: 'hsl(218, 85%, 50%)'
|
|
107
|
+
},
|
|
108
|
+
'&:disabled': {
|
|
109
|
+
backgroundColor: '#9ca3af'
|
|
110
|
+
}
|
|
111
|
+
}, children: isSubmitting ? "Sending..." : Locale.label("login.reset") }), _jsxs("div", { style: { textAlign: 'center', display: 'flex', justifyContent: 'center', alignItems: 'center', gap: '8px' }, children: [_jsx("button", { type: "button", onClick: (e) => { e.preventDefault(); props.registerCallback(); }, style: {
|
|
112
|
+
background: 'none',
|
|
113
|
+
border: 'none',
|
|
114
|
+
color: '#3b82f6',
|
|
115
|
+
fontSize: '14px',
|
|
116
|
+
cursor: 'pointer',
|
|
117
|
+
textDecoration: 'none'
|
|
118
|
+
}, onMouseOver: (e) => e.currentTarget.style.textDecoration = 'underline', onMouseOut: (e) => e.currentTarget.style.textDecoration = 'none', children: Locale.label("login.register") }), _jsx("span", { style: { fontSize: '14px', color: '#6b7280' }, children: "|" }), _jsx("button", { type: "button", onClick: (e) => { e.preventDefault(); props.loginCallback(); }, style: {
|
|
119
|
+
background: 'none',
|
|
120
|
+
border: 'none',
|
|
121
|
+
color: '#3b82f6',
|
|
122
|
+
fontSize: '14px',
|
|
123
|
+
cursor: 'pointer',
|
|
124
|
+
textDecoration: 'none'
|
|
125
|
+
}, onMouseOver: (e) => e.currentTarget.style.textDecoration = 'underline', onMouseOut: (e) => e.currentTarget.style.textDecoration = 'none', children: Locale.label("login.login") })] })] }))] })] }) }) }));
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=Forgot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Forgot.js","sourceRoot":"","sources":["../../src/components/Forgot.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOjF,MAAM,CAAC,MAAM,MAAM,GAAoB,KAAK,CAAC,EAAE;IAC7C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqB,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9D,MAAM,YAAY,GAAG,CAAC,CAAgF,EAAE,EAAE;QACxG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,6CAA6C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAEpG,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;aACzD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAClF,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAA;IAED,MAAM,KAAK,GAAqB,CAAC,CAAC,EAAE,EAAE;QACpC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,QAAQ,EAAE,EAAE,CAAC;YACf,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,GAAG,GAAkC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC9D,SAAS,CAAC,aAAa,CAAC,eAAe,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,IAAoC,EAAE,EAAE;gBAC3G,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,SAAS,CAAC,EAAE,CAAC,CAAC;oBACd,iBAAiB,CACf,MAAC,UAAU,IAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,MAAM,aAC5C,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAE,cAAM,EAAA,cAAM,EAC9C,iBACE,KAAK,EAAE;oCACL,UAAU,EAAE,MAAM;oCAClB,MAAM,EAAE,MAAM;oCACd,KAAK,EAAE,SAAS;oCAChB,QAAQ,EAAE,MAAM;oCAChB,MAAM,EAAE,SAAS;oCACjB,cAAc,EAAE,MAAM;iCACvB,EACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,WAAW,EACtE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,EAChE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,YAE7D,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GACvB,IACE,CACd,CAAC;oBACF,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC;oBACpE,iBAAiB,CAAC,mBAAK,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,YAC5I,KAAC,IAAI,IAAC,EAAE,EAAE;gBACR,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;gBACtC,eAAe,EAAE,OAAO;gBACxB,MAAM,EAAE,mBAAmB;gBAC3B,SAAS,EAAE,yEAAyE;aACrF,YACC,MAAC,WAAW,IAAC,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aACvD,cAAK,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,YAClC,cACE,GAAG,EAAC,wBAAwB,EAC5B,GAAG,EAAC,aAAa,EACjB,KAAK,EAAE;gCACL,QAAQ,EAAE,MAAM;gCAChB,KAAK,EAAE,MAAM;gCACb,MAAM,EAAE,MAAM;gCACd,SAAS,EAAE,MAAM;gCACjB,YAAY,EAAE,MAAM;gCACpB,SAAS,EAAE,SAAS;6BACrB,GACD,GACE,EACN,KAAC,UAAU,IACT,SAAS,EAAC,IAAI,EACd,EAAE,EAAE;4BACF,QAAQ,EAAE,MAAM;4BAChB,UAAU,EAAE,MAAM;4BAClB,KAAK,EAAE,SAAS;4BAChB,YAAY,EAAE,KAAK;yBACpB,YAEA,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,GACzB,EACb,KAAC,UAAU,IACT,EAAE,EAAE;4BACF,KAAK,EAAE,SAAS;4BAChB,YAAY,EAAE,MAAM;yBACrB,wEAGU,EAEb,gBAAM,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,aACpF,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,cAAK,KAAK,EAAE;oCACV,eAAe,EAAE,SAAS;oCAC1B,MAAM,EAAE,mBAAmB;oCAC3B,YAAY,EAAE,KAAK;oCACnB,OAAO,EAAE,MAAM;oCACf,SAAS,EAAE,MAAM;iCAClB,YACE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,cAAiB,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAG,KAAK,IAA5D,KAAK,CAA8D,CAC9E,CAAC,GACE,CACP,EAEA,cAAc,CAAC,CAAC,CAAC,CAChB,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,YACvF,cAAc,GACX,CACP,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YACtF,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,GAC7B,EAEb,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,aAClE,gBAAO,OAAO,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,YAC5G,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GACtB,EACR,KAAC,SAAS,IACR,EAAE,EAAC,cAAc,EACjB,IAAI,EAAC,cAAc,EACnB,IAAI,EAAC,OAAO,EACZ,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EACxC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,EACtB,SAAS,QACT,QAAQ,QACR,YAAY,EAAC,OAAO,EACpB,OAAO,EAAC,UAAU,EAClB,SAAS,QACT,SAAS,EAAE,CAAC,CAAwC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,EACnF,EAAE,EAAE;oDACF,0BAA0B,EAAE;wDAC1B,eAAe,EAAE,OAAO;wDACxB,YAAY,EAAE;4DACZ,WAAW,EAAE,SAAS;yDACvB;wDACD,kBAAkB,EAAE;4DAClB,WAAW,EAAE,SAAS;yDACvB;wDACD,wBAAwB,EAAE;4DACxB,WAAW,EAAE,SAAS;yDACvB;wDACD,SAAS,EAAE;4DACT,KAAK,EAAE,SAAS;4DAChB,QAAQ,EAAE,MAAM;yDACjB;qDACF;oDACD,uBAAuB,EAAE;wDACvB,OAAO,EAAE,MAAM;qDAChB;iDACF,GACD,IACE,EAEN,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,WAAW,EACnB,SAAS,QACT,QAAQ,EAAE,YAAY,EACtB,EAAE,EAAE;4CACF,eAAe,EAAE,oBAAoB;4CACrC,KAAK,EAAE,OAAO;4CACd,OAAO,EAAE,MAAM;4CACf,aAAa,EAAE,MAAM;4CACrB,QAAQ,EAAE,MAAM;4CAChB,UAAU,EAAE,GAAG;4CACf,YAAY,EAAE,KAAK;4CACnB,SAAS,EAAE;gDACT,eAAe,EAAE,oBAAoB;6CACtC;4CACD,YAAY,EAAE;gDACZ,eAAe,EAAE,SAAS;6CAC3B;yCACF,YAEA,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GACnD,EAET,eAAK,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,aAC9G,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EACjE,KAAK,EAAE;oDACL,UAAU,EAAE,MAAM;oDAClB,MAAM,EAAE,MAAM;oDACd,KAAK,EAAE,SAAS;oDAChB,QAAQ,EAAE,MAAM;oDAChB,MAAM,EAAE,SAAS;oDACjB,cAAc,EAAE,MAAM;iDACvB,EACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,WAAW,EACtE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,YAE/D,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,GACxB,EACT,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAU,EAC7D,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAC9D,KAAK,EAAE;oDACL,UAAU,EAAE,MAAM;oDAClB,MAAM,EAAE,MAAM;oDACd,KAAK,EAAE,SAAS;oDAChB,QAAQ,EAAE,MAAM;oDAChB,MAAM,EAAE,SAAS;oDACjB,cAAc,EAAE,MAAM;iDACvB,EACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,WAAW,EACtE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,YAE/D,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GACrB,IACL,IACL,CACJ,IACI,IACK,GACT,GACH,CACP,CAAC;AACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { PaperProps } from "@mui/material";
|
|
3
|
+
interface Props {
|
|
4
|
+
login: (data: any) => void;
|
|
5
|
+
isSubmitting: boolean;
|
|
6
|
+
setShowRegister: (showRegister: boolean) => void;
|
|
7
|
+
setShowForgot: (showForgot: boolean) => void;
|
|
8
|
+
setErrors: (errors: string[]) => void;
|
|
9
|
+
mainContainerCssProps?: PaperProps;
|
|
10
|
+
defaultEmail?: string;
|
|
11
|
+
defaultPassword?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const Login: React.FC<Props>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=Login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Login.d.ts","sourceRoot":"","sources":["../../src/components/Login.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAkB,UAAU,EAAqE,MAAM,eAAe,CAAC;AAI9H,UAAU,KAAK;IACb,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,aAAa,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtC,qBAAqB,CAAC,EAAE,UAAU,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuOjC,CAAA"}
|