Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita43628b

Browse files
update login flow for enterprise mode
1 parent4b58461 commita43628b

File tree

3 files changed

+85
-22
lines changed

3 files changed

+85
-22
lines changed

‎client/packages/lowcoder/src/pages/userAuth/formLoginSteps.tsx‎

Lines changed: 64 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
ConfirmButton,
55
StyledRouteLink,
66
}from"pages/userAuth/authComponents";
7-
importReact,{useContext,useEffect,useState}from"react";
7+
importReact,{useContext,useEffect,useMemo,useState}from"react";
88
importstyledfrom"styled-components";
99
importUserApifrom"api/userApi";
1010
import{useRedirectUrl}from"util/hooks";
@@ -19,7 +19,7 @@ import { Divider } from "antd";
1919
importFlexfrom"antd/es/flex";
2020
import{validateResponse}from"@lowcoder-ee/api/apiUtils";
2121
importOrgApifrom"@lowcoder-ee/api/orgApi";
22-
import{AccountLoginWrapper}from"./formLoginAdmin";
22+
importFormLogin,{AccountLoginWrapper}from"./formLoginAdmin";
2323
import{defaultasButton}from"antd/es/button";
2424
importLeftOutlinedfrom"@ant-design/icons/LeftOutlined";
2525
import{fetchConfigAction}from"@lowcoder-ee/redux/reduxActions/configActions";
@@ -28,6 +28,9 @@ import history from "util/history";
2828
import{getServerSettings}from"@lowcoder-ee/redux/selectors/applicationSelector";
2929
import{fetchOrgPaginationByEmail}from"@lowcoder-ee/util/pagination/axios";
3030
importPaginationCompfrom"@lowcoder-ee/util/pagination/Pagination";
31+
import{getSystemConfigFetching}from"@lowcoder-ee/redux/selectors/configSelectors";
32+
importSpinfrom"antd/es/spin";
33+
importLoadingOutlinedfrom"@ant-design/icons/LoadingOutlined";
3134

3235
constStyledCard=styled.div<{$selected:boolean}>`
3336
display: flex;
@@ -107,18 +110,28 @@ export default function FormLoginSteps(props: FormLoginProps) {
107110
const{ systemConfig, inviteInfo, fetchUserAfterAuthSuccess}=useContext(AuthContext);
108111
constinvitationId=inviteInfo?.invitationId;
109112
constauthId=systemConfig?.form.id;
110-
constisFormLoginEnabled=systemConfig?.form.enableLogin;
113+
constisFormLoginEnabled=systemConfig?.form.enableLogin;// check from configs
111114
const[orgLoading,setOrgLoading]=useState(false);
112115
const[orgList,setOrgList]=useState<OrgItem[]>([]);
113116
const[currentStep,setCurrentStep]=useState<CurrentStepEnum>(CurrentStepEnum.EMAIL);
114117
const[organizationId,setOrganizationId]=useState<string|undefined>(props.organizationId);
115118
const[skipWorkspaceStep,setSkipWorkspaceStep]=useState<boolean>(false);
116119
const[signupEnabled,setSignupEnabled]=useState<boolean>(true);
120+
const[signinEnabled,setSigninEnabled]=useState<boolean>(true);// check from server settings
117121
constserverSettings=useSelector(getServerSettings);
122+
constisFetchingConfig=useSelector(getSystemConfigFetching);
118123
const[elements,setElements]=useState<ElementsState>({elements:[],total:0});
119124
const[currentPage,setCurrentPage]=useState(1);
120125
const[pageSize,setPageSize]=useState(10);
121126

127+
constisEmailLoginEnabled=useMemo(()=>{
128+
returnisFormLoginEnabled&&signinEnabled;
129+
},[isFormLoginEnabled,signinEnabled]);
130+
131+
constisEnterpriseMode=useMemo(()=>{
132+
returnserverSettings?.LOWCODER_WORKSPACE_MODE==="ENTERPRISE"||serverSettings?.LOWCODER_WORKSPACE_MODE==="SINGLEWORKSPACE";
133+
},[serverSettings]);
134+
122135
useEffect(()=>{
123136
if(account)
124137
fetchOrgPaginationByEmail({
@@ -133,11 +146,13 @@ export default function FormLoginSteps(props: FormLoginProps) {
133146
},[pageSize,currentPage])
134147

135148
useEffect(()=>{
136-
const{LOWCODER_EMAIL_SIGNUP_ENABLED}=serverSettings;
137-
if(!LOWCODER_EMAIL_SIGNUP_ENABLED){
138-
returnsetSignupEnabled(true);
139-
}
149+
const{
150+
LOWCODER_EMAIL_SIGNUP_ENABLED,
151+
LOWCODER_EMAIL_AUTH_ENABLED,
152+
}=serverSettings;
153+
140154
setSignupEnabled(LOWCODER_EMAIL_SIGNUP_ENABLED==='true');
155+
setSigninEnabled(LOWCODER_EMAIL_AUTH_ENABLED==='true');
141156
},[serverSettings]);
142157

143158
const{ onSubmit, loading}=useAuthSubmit(
@@ -167,8 +182,9 @@ export default function FormLoginSteps(props: FormLoginProps) {
167182
}
168183

169184
setOrgLoading(true);
185+
// for enterprise mode, we will not ask for email in first step
170186
fetchOrgPaginationByEmail({
171-
email:account,
187+
email:isEnterpriseMode ?' ' :account,
172188
pageNum:currentPage,
173189
pageSize:pageSize
174190
})
@@ -177,16 +193,13 @@ export default function FormLoginSteps(props: FormLoginProps) {
177193
setElements({elements:resp.data||[],total:resp.total||1})
178194
setOrgList(resp.data);
179195
if(!resp.data.length){
180-
// history.push(
181-
// AUTH_REGISTER_URL,
182-
// {...location.state || {}, email: account},
183-
// )
184-
// return;
185196
thrownewError(trans("userAuth.userNotFound"));
186197
}
187198
if(resp.data.length===1){
188-
setOrganizationId(resp.data[0].orgId);
189-
dispatch(fetchConfigAction(resp.data[0].orgId));
199+
// in Enterprise mode, we will get org data in different format
200+
constselectedOrgId=isEnterpriseMode ?resp.data[0].id :resp.data[0].orgId;
201+
setOrganizationId(selectedOrgId);
202+
dispatch(fetchConfigAction(selectedOrgId));
190203
setCurrentStep(CurrentStepEnum.AUTH_PROVIDERS);
191204
return;
192205
}
@@ -203,6 +216,39 @@ export default function FormLoginSteps(props: FormLoginProps) {
203216
});
204217
}
205218

219+
useEffect(()=>{
220+
if(isEnterpriseMode){
221+
// dispatch(fetchConfigAction());
222+
fetchOrgsByEmail();
223+
}
224+
},[isEnterpriseMode]);
225+
226+
if(isEnterpriseMode){
227+
return(
228+
<Spinindicator={<LoadingOutlinedstyle={{fontSize:30}}/>}spinning={isFetchingConfig}>
229+
{isEmailLoginEnabled&&<FormLogin/>}
230+
<ThirdPartyAuth
231+
invitationId={invitationId}
232+
invitedOrganizationId={organizationId}
233+
authGoal="login"
234+
/>
235+
{signupEnabled&&(
236+
<>
237+
<Divider/>
238+
<AuthBottomView>
239+
<StyledRouteLinkto={{
240+
pathname:AUTH_REGISTER_URL,
241+
state:{...location.state||{},email:account}
242+
}}>
243+
{trans("userAuth.register")}
244+
</StyledRouteLink>
245+
</AuthBottomView>
246+
</>
247+
)}
248+
</Spin>
249+
);
250+
}
251+
206252
if(currentStep===CurrentStepEnum.EMAIL){
207253
return(
208254
<>
@@ -281,10 +327,10 @@ export default function FormLoginSteps(props: FormLoginProps) {
281327
}}/>
282328
<StepHeader
283329
title={
284-
isFormLoginEnabled ?trans("userAuth.enterPassword") :trans("userAuth.selectAuthProvider")
330+
isEmailLoginEnabled ?trans("userAuth.enterPassword") :trans("userAuth.selectAuthProvider")
285331
}
286332
/>
287-
{isFormLoginEnabled&&(
333+
{isEmailLoginEnabled&&(
288334
<>
289335
<PasswordInput
290336
className="form-input password-input"
@@ -316,7 +362,7 @@ export default function FormLoginSteps(props: FormLoginProps) {
316362
/>
317363
)}
318364
</AccountLoginWrapper>
319-
{isFormLoginEnabled&&signupEnabled&&(
365+
{isEmailLoginEnabled&&signupEnabled&&(
320366
<>
321367
<Divider/>
322368
<AuthBottomView>

‎client/packages/lowcoder/src/pages/userAuth/register.tsx‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,16 @@ function UserRegister() {
6363
returninviteInfo?.invitedOrganizationId;
6464
}
6565
returnorgId;
66-
},[inviteInfo,orgId])
66+
},[inviteInfo,orgId]);
6767

6868
constauthId=systemConfig?.form.id;
6969

7070
constserverSettings=useSelector(getServerSettings);
7171

72+
constisEnterpriseMode=useMemo(()=>{
73+
returnserverSettings?.LOWCODER_WORKSPACE_MODE==="ENTERPRISE"||serverSettings?.LOWCODER_WORKSPACE_MODE==="SINGLEWORKSPACE";
74+
},[serverSettings]);
75+
7276
useEffect(()=>{
7377
const{LOWCODER_EMAIL_SIGNUP_ENABLED}=serverSettings;
7478
if(
@@ -160,7 +164,7 @@ function UserRegister() {
160164
{trans("userAuth.register")}
161165
</ConfirmButton>
162166
<TermsAndPrivacyInfoonCheckChange={(e)=>setSubmitBtnDisable(!e.target.checked)}/>
163-
{organizationId&&(
167+
{(organizationId||isEnterpriseMode)&&(
164168
<ThirdPartyAuth
165169
invitationId={invitationId}
166170
invitedOrganizationId={organizationId}

‎client/packages/lowcoder/src/pages/userAuth/thirdParty/thirdPartyAuth.tsx‎

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import history from "util/history";
88
import{LoginLogoStyle,LoginLabelStyle,StyledLoginButton}from"pages/userAuth/authComponents";
99
import{useSelector}from"react-redux";
1010
import{getSystemConfigFetching,selectSystemConfig}from"redux/selectors/configSelectors";
11-
importReactfrom"react";
11+
importReact,{useMemo}from"react";
1212
import{messageInstance}from"lowcoder-design/src/components/GlobalInstances";
1313
importstyledfrom"styled-components";
1414
import{trans}from"i18n";
@@ -19,6 +19,7 @@ import { useRedirectUrl } from "util/hooks";
1919
import{MultiIconDisplay}from"../../../comps/comps/multiIconDisplay";
2020
importSpinfrom"antd/es/spin";
2121
import{LoadingOutlined}from"@ant-design/icons";
22+
import{getServerSettings}from"@lowcoder-ee/redux/selectors/applicationSelector";
2223

2324
const{ Text}=Typography;
2425

@@ -111,7 +112,16 @@ export function ThirdPartyAuth(props: {
111112
}){
112113
constsystemConfigFetching=useSelector(getSystemConfigFetching);
113114
constsystemConfig=useSelector(selectSystemConfig);
115+
constserverSettings=useSelector(getServerSettings);
114116
constisFormLoginEnabled=systemConfig?.form.enableLogin;
117+
118+
constisEmailLoginEnabled=useMemo(()=>{
119+
returnisFormLoginEnabled&&serverSettings.LOWCODER_EMAIL_AUTH_ENABLED==='true';
120+
},[isFormLoginEnabled,serverSettings]);
121+
122+
constisEmailSignupEnabled=useMemo(()=>{
123+
returnserverSettings.LOWCODER_EMAIL_SIGNUP_ENABLED==='true';
124+
},[serverSettings]);
115125

116126
if(systemConfigFetching){
117127
return<Spinindicator={<LoadingOutlinedstyle={{fontSize:15,marginTop:'16px'}}spin/>}/>;
@@ -140,7 +150,10 @@ export function ThirdPartyAuth(props: {
140150
});
141151
return(
142152
<ThirdPartyLoginButtonWrapper>
143-
{isFormLoginEnabled&&Boolean(socialLoginButtons.length)&&(
153+
{(
154+
(isEmailLoginEnabled&&props.authGoal==='login')
155+
||(isEmailSignupEnabled&&props.authGoal==='register')
156+
)&&Boolean(socialLoginButtons.length)&&(
144157
<Dividerplain>
145158
<Texttype="secondary">or</Text>
146159
</Divider>

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp