Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
920b0f64
Commit
920b0f64
authored
Feb 12, 2025
by
Johnny
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: extract auth footer
parent
3c71ee9d
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
45 additions
and
63 deletions
+45
-63
AuthFooter.tsx
web/src/components/AuthFooter.tsx
+28
-0
PasswordSignInForm.tsx
web/src/components/PasswordSignInForm.tsx
+3
-10
UpdateAccountDialog.tsx
web/src/components/UpdateAccountDialog.tsx
+1
-1
UpdateCustomizedProfileDialog.tsx
web/src/components/UpdateCustomizedProfileDialog.tsx
+1
-1
AdminSignIn.tsx
web/src/pages/AdminSignIn.tsx
+4
-17
SignIn.tsx
web/src/pages/SignIn.tsx
+4
-17
SignUp.tsx
web/src/pages/SignUp.tsx
+4
-17
No files found.
web/src/components/AuthFooter.tsx
0 → 100644
View file @
920b0f64
import
{
observer
}
from
"mobx-react-lite"
;
import
{
workspaceStore
}
from
"@/store/v2"
;
import
{
cn
}
from
"@/utils"
;
import
AppearanceSelect
from
"./AppearanceSelect"
;
import
LocaleSelect
from
"./LocaleSelect"
;
interface
Props
{
className
?:
string
;
}
const
AuthFooter
=
observer
(({
className
}:
Props
)
=>
{
const
handleLocaleSelectChange
=
(
locale
:
Locale
)
=>
{
workspaceStore
.
state
.
setPartial
({
locale
});
};
const
handleAppearanceSelectChange
=
(
appearance
:
Appearance
)
=>
{
workspaceStore
.
state
.
setPartial
({
appearance
});
};
return
(
<
div
className=
{
cn
(
"mt-4 flex flex-row items-center justify-center w-full gap-2"
,
className
)
}
>
<
LocaleSelect
value=
{
workspaceStore
.
state
.
locale
}
onChange=
{
handleLocaleSelectChange
}
/>
<
AppearanceSelect
value=
{
workspaceStore
.
state
.
appearance
as
Appearance
}
onChange=
{
handleAppearanceSelectChange
}
/>
</
div
>
);
});
export
default
AuthFooter
;
web/src/components/PasswordSignInForm.tsx
View file @
920b0f64
...
...
@@ -2,7 +2,7 @@ import { Button, Checkbox, Input } from "@usememos/mui";
import
{
LoaderIcon
}
from
"lucide-react"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
ClientError
}
from
"nice-grpc-web"
;
import
{
use
Effect
,
use
State
}
from
"react"
;
import
{
useState
}
from
"react"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
authServiceClient
}
from
"@/grpcweb"
;
import
useLoading
from
"@/hooks/useLoading"
;
...
...
@@ -15,17 +15,10 @@ const PasswordSignInForm = observer(() => {
const
t
=
useTranslate
();
const
navigateTo
=
useNavigateTo
();
const
actionBtnLoadingState
=
useLoading
(
false
);
const
[
username
,
setUsername
]
=
useState
(
""
);
const
[
password
,
setPassword
]
=
useState
(
""
);
const
[
username
,
setUsername
]
=
useState
(
workspaceStore
.
state
.
profile
.
mode
===
"demo"
?
"yourselfhosted"
:
""
);
const
[
password
,
setPassword
]
=
useState
(
workspaceStore
.
state
.
profile
.
mode
===
"demo"
?
"yourselfhosted"
:
""
);
const
[
remember
,
setRemember
]
=
useState
(
true
);
useEffect
(()
=>
{
if
(
workspaceStore
.
state
.
profile
.
mode
===
"demo"
)
{
setUsername
(
"yourselfhosted"
);
setPassword
(
"yourselfhosted"
);
}
},
[
workspaceStore
.
state
.
profile
.
mode
]);
const
handleUsernameInputChanged
=
(
e
:
React
.
ChangeEvent
<
HTMLInputElement
>
)
=>
{
const
text
=
e
.
target
.
value
as
string
;
setUsername
(
text
);
...
...
web/src/components/UpdateAccountDialog.tsx
View file @
920b0f64
...
...
@@ -22,7 +22,7 @@ interface State {
description
:
string
;
}
const
UpdateAccountDialog
:
React
.
FC
<
Props
>
=
({
destroy
}:
Props
)
=>
{
const
UpdateAccountDialog
=
({
destroy
}:
Props
)
=>
{
const
t
=
useTranslate
();
const
currentUser
=
useCurrentUser
();
const
[
state
,
setState
]
=
useState
<
State
>
({
...
...
web/src/components/UpdateCustomizedProfileDialog.tsx
View file @
920b0f64
...
...
@@ -14,7 +14,7 @@ import LocaleSelect from "./LocaleSelect";
type
Props
=
DialogProps
;
const
UpdateCustomizedProfileDialog
:
React
.
FC
<
Props
>
=
({
destroy
}:
Props
)
=>
{
const
UpdateCustomizedProfileDialog
=
({
destroy
}:
Props
)
=>
{
const
t
=
useTranslate
();
const
workspaceGeneralSetting
=
workspaceStore
.
state
.
generalSetting
;
const
[
customProfile
,
setCustomProfile
]
=
useState
<
WorkspaceCustomProfile
>
(
...
...
web/src/pages/AdminSignIn.tsx
View file @
920b0f64
import
{
observer
}
from
"mobx-react-lite"
;
import
AppearanceSelect
from
"@/components/AppearanceSelect"
;
import
LocaleSelect
from
"@/components/LocaleSelect"
;
import
AuthFooter
from
"@/components/AuthFooter"
;
import
PasswordSignInForm
from
"@/components/PasswordSignInForm"
;
import
{
workspaceStore
}
from
"@/store/v2"
;
const
AdminSignIn
=
observer
(
()
=>
{
const
AdminSignIn
=
()
=>
{
const
workspaceGeneralSetting
=
workspaceStore
.
state
.
generalSetting
;
const
handleLocaleSelectChange
=
(
locale
:
Locale
)
=>
{
workspaceStore
.
state
.
setPartial
({
locale
});
};
const
handleAppearanceSelectChange
=
(
appearance
:
Appearance
)
=>
{
workspaceStore
.
state
.
setPartial
({
appearance
});
};
return
(
<
div
className=
"py-4 sm:py-8 w-80 max-w-full min-h-[100svh] mx-auto flex flex-col justify-start items-center"
>
<
div
className=
"w-full py-4 grow flex flex-col justify-center items-center"
>
...
...
@@ -27,12 +17,9 @@ const AdminSignIn = observer(() => {
<
p
className=
"w-full text-xl font-medium dark:text-gray-500"
>
Sign in with admin accounts
</
p
>
<
PasswordSignInForm
/>
</
div
>
<
div
className=
"mt-4 flex flex-row items-center justify-center w-full gap-2"
>
<
LocaleSelect
value=
{
workspaceStore
.
state
.
locale
}
onChange=
{
handleLocaleSelectChange
}
/>
<
AppearanceSelect
value=
{
workspaceStore
.
state
.
appearance
as
Appearance
}
onChange=
{
handleAppearanceSelectChange
}
/>
</
div
>
<
AuthFooter
/>
</
div
>
);
}
)
;
};
export
default
AdminSignIn
;
web/src/pages/SignIn.tsx
View file @
920b0f64
import
{
Divider
}
from
"@mui/joy"
;
import
{
Button
}
from
"@usememos/mui"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
Link
}
from
"react-router-dom"
;
import
AppearanceSelect
from
"@/components/AppearanceSelect"
;
import
LocaleSelect
from
"@/components/LocaleSelect"
;
import
AuthFooter
from
"@/components/AuthFooter"
;
import
PasswordSignInForm
from
"@/components/PasswordSignInForm"
;
import
{
identityProviderServiceClient
}
from
"@/grpcweb"
;
import
{
absolutifyLink
}
from
"@/helpers/utils"
;
...
...
@@ -16,7 +14,7 @@ import { workspaceStore } from "@/store/v2";
import
{
IdentityProvider
,
IdentityProvider_Type
}
from
"@/types/proto/api/v1/idp_service"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
const
SignIn
=
observer
(
()
=>
{
const
SignIn
=
()
=>
{
const
t
=
useTranslate
();
const
currentUser
=
useCurrentUser
();
const
[
identityProviderList
,
setIdentityProviderList
]
=
useState
<
IdentityProvider
[]
>
([]);
...
...
@@ -38,14 +36,6 @@ const SignIn = observer(() => {
fetchIdentityProviderList
();
},
[]);
const
handleLocaleSelectChange
=
(
locale
:
Locale
)
=>
{
workspaceStore
.
state
.
setPartial
({
locale
});
};
const
handleAppearanceSelectChange
=
(
appearance
:
Appearance
)
=>
{
workspaceStore
.
state
.
setPartial
({
appearance
});
};
const
handleSignInWithIdentityProvider
=
async
(
identityProvider
:
IdentityProvider
)
=>
{
const
stateQueryParameter
=
`auth.signin.
${
identityProvider
.
title
}
-
${
extractIdentityProviderIdFromName
(
identityProvider
.
name
)}
`
;
if
(
identityProvider
.
type
===
IdentityProvider_Type
.
OAUTH2
)
{
...
...
@@ -105,12 +95,9 @@ const SignIn = observer(() => {
</>
)
}
</
div
>
<
div
className=
"mt-4 flex flex-row items-center justify-center w-full gap-2"
>
<
LocaleSelect
value=
{
workspaceStore
.
state
.
locale
}
onChange=
{
handleLocaleSelectChange
}
/>
<
AppearanceSelect
value=
{
workspaceStore
.
state
.
appearance
as
Appearance
}
onChange=
{
handleAppearanceSelectChange
}
/>
</
div
>
<
AuthFooter
/>
</
div
>
);
}
)
;
};
export
default
SignIn
;
web/src/pages/SignUp.tsx
View file @
920b0f64
import
{
Button
,
Input
}
from
"@usememos/mui"
;
import
{
LoaderIcon
}
from
"lucide-react"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
ClientError
}
from
"nice-grpc-web"
;
import
{
useState
}
from
"react"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
Link
}
from
"react-router-dom"
;
import
AppearanceSelect
from
"@/components/AppearanceSelect"
;
import
LocaleSelect
from
"@/components/LocaleSelect"
;
import
AuthFooter
from
"@/components/AuthFooter"
;
import
{
authServiceClient
}
from
"@/grpcweb"
;
import
useLoading
from
"@/hooks/useLoading"
;
import
useNavigateTo
from
"@/hooks/useNavigateTo"
;
...
...
@@ -14,7 +12,7 @@ import { workspaceStore } from "@/store/v2";
import
{
initialUserStore
}
from
"@/store/v2/user"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
const
SignUp
=
observer
(
()
=>
{
const
SignUp
=
()
=>
{
const
t
=
useTranslate
();
const
navigateTo
=
useNavigateTo
();
const
actionBtnLoadingState
=
useLoading
(
false
);
...
...
@@ -32,14 +30,6 @@ const SignUp = observer(() => {
setPassword
(
text
);
};
const
handleLocaleSelectChange
=
(
locale
:
Locale
)
=>
{
workspaceStore
.
state
.
setPartial
({
locale
});
};
const
handleAppearanceSelectChange
=
(
appearance
:
Appearance
)
=>
{
workspaceStore
.
state
.
setPartial
({
appearance
});
};
const
handleFormSubmit
=
(
e
:
React
.
FormEvent
<
HTMLFormElement
>
)
=>
{
e
.
preventDefault
();
handleSignUpButtonClick
();
...
...
@@ -142,12 +132,9 @@ const SignUp = observer(() => {
</
p
>
)
}
</
div
>
<
div
className=
"mt-4 flex flex-row items-center justify-center w-full gap-2"
>
<
LocaleSelect
value=
{
workspaceStore
.
state
.
locale
}
onChange=
{
handleLocaleSelectChange
}
/>
<
AppearanceSelect
value=
{
workspaceStore
.
state
.
appearance
as
Appearance
}
onChange=
{
handleAppearanceSelectChange
}
/>
</
div
>
<
AuthFooter
/>
</
div
>
);
}
)
;
};
export
default
SignUp
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment