Skip to content
This repository was archived by the owner on Jul 1, 2024. It is now read-only.

Commit 2761fee

Browse files
authored
Merge pull request #29 from oxygenpay/develop
merge: develop
2 parents 253b60c + a76367e commit 2761fee

File tree

8 files changed

+71
-32
lines changed

8 files changed

+71
-32
lines changed

internal/db/repository/users.sql.go

Lines changed: 11 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/service/user/service_google.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
)
1616

1717
func (s *Service) ResolveWithGoogle(ctx context.Context, user *auth.GoogleUser) (*User, error) {
18-
entry, err := s.store.GetUserByGoogleID(ctx, repository.StringToNullable(user.Sub))
18+
entry, err := s.store.GetUserByEmail(ctx, user.Email)
1919
switch {
2020
case errors.Is(err, pgx.ErrNoRows):
2121
return s.registerGoogleUser(ctx, user)
@@ -57,6 +57,8 @@ func (s *Service) registerGoogleUser(ctx context.Context, user *auth.GoogleUser)
5757
func (s *Service) updateGoogleUser(ctx context.Context, userID int64, user *auth.GoogleUser) (*User, error) {
5858
entry, err := s.store.UpdateUser(ctx, repository.UpdateUserParams{
5959
ID: userID,
60+
SetGoogleID: true,
61+
GoogleID: repository.StringToNullable(user.Sub),
6062
Name: user.Name,
6163
ProfileImageUrl: repository.StringToNullable(user.Picture),
6264
UpdatedAt: time.Now(),

pkg/api-kms/v1/client/wallet/create_b_s_c_transaction_parameters.go

Lines changed: 3 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/api-kms/v1/client/wallet/create_b_s_c_transaction_responses.go

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/api-kms/v1/client/wallet/wallet_client.go

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/queries/users.sql

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,11 @@ RETURNING *;
3131

3232
-- name: UpdateUser :one
3333
UPDATE users
34-
SET name = $1,
35-
profile_image_url= $2,
36-
updated_at = $3
37-
WHERE id = $4
34+
SET name = $2,
35+
profile_image_url= $3,
36+
google_id = CASE WHEN @set_google_id::boolean THEN $4 ELSE users.google_id END,
37+
updated_at = $5
38+
WHERE id = $1
3839
RETURNING *;
3940

4041
-- name: UpdateUserPassword :one

ui-dashboard/src/app.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ const App: React.FC = () => {
9898
const [user, setUser] = React.useState<User>();
9999
const [isSupportFormOpen, setIsSupportFormOpen] = React.useState<boolean>(false);
100100
const [isFormSubmitting, setIsFormSubmitting] = React.useState<boolean>(false);
101+
const [isLoading, setIsLoading] = React.useState<boolean>(true);
101102

102103
const loadUserInfo = async () => {
103104
let newMerchantId = merchantId;
@@ -112,7 +113,11 @@ const App: React.FC = () => {
112113
posthog?.reset(true);
113114
}
114115

115-
navigate("/login");
116+
navigate("/login", {
117+
state: {
118+
isNeedLogout: true
119+
}
120+
});
116121
}
117122
}
118123
};
@@ -127,7 +132,11 @@ const App: React.FC = () => {
127132
posthog?.reset(true);
128133
}
129134

130-
navigate("/login");
135+
navigate("/login", {
136+
state: {
137+
isNeedLogout: true
138+
}
139+
});
131140
}
132141
}
133142
};
@@ -154,6 +163,7 @@ const App: React.FC = () => {
154163
if (!newMerchantId) return;
155164

156165
await getMerchant(newMerchantId);
166+
setIsLoading(false);
157167
};
158168

159169
await getCookie();
@@ -210,7 +220,11 @@ const App: React.FC = () => {
210220
}
211221

212222
await authProvider.logout();
213-
navigate("/login");
223+
navigate("/login", {
224+
state: {
225+
isNeedLogout: true
226+
}
227+
});
214228
};
215229

216230
const userMenu: MenuProps["items"] = [
@@ -277,6 +291,7 @@ const App: React.FC = () => {
277291
)}
278292
</RouteContext.Consumer>
279293
}
294+
loading={isLoading}
280295
actionsRender={() => {
281296
return [
282297
!isManageMerchantsActive ? (

ui-dashboard/src/pages/login-page/login-page.tsx

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import "./login-page.scss";
22

33
import * as React from "react";
4-
import {useNavigate} from "react-router-dom";
4+
import {AxiosError} from "axios";
5+
import {useNavigate, useLocation} from "react-router-dom";
56
import {Modal, Button, Typography, Form, Input, notification} from "antd";
67
import {GoogleOutlined, CheckOutlined} from "@ant-design/icons";
78
import logoImg from "/fav/android-chrome-192x192.png";
@@ -15,12 +16,17 @@ import SpinWithMask from "src/components/spin-with-mask/spin-with-mask";
1516

1617
const b = bevis("login-page");
1718

19+
interface LoginState {
20+
isNeedLogout: boolean;
21+
}
22+
1823
const LoginPage: React.FC = () => {
1924
const [form] = Form.useForm<UserCreateForm>();
2025
const [api, contextHolder] = notification.useNotification();
2126
const [isFormSubmitting, setIsFormSubmitting] = React.useState<boolean>(false);
2227
const [providersList, setProvidersList] = React.useState<AuthProvider[]>([]);
2328
const navigate = useNavigate();
29+
const state: LoginState = useLocation().state;
2430

2531
const openNotification = (title: string, description: string) => {
2632
api.info({
@@ -60,7 +66,21 @@ const LoginPage: React.FC = () => {
6066

6167
useMount(async () => {
6268
window.addEventListener("popstate", () => navigate("/login", {replace: true}));
63-
localStorage.remove("merchantId");
69+
70+
if (state?.isNeedLogout) {
71+
localStorage.remove("merchantId");
72+
} else {
73+
try {
74+
await authProvider.getCookie();
75+
await authProvider.getMe();
76+
navigate("/");
77+
} catch (e) {
78+
if (e instanceof AxiosError && e.response?.status === 401) {
79+
localStorage.remove("merchantId");
80+
}
81+
}
82+
}
83+
6484
const availProviders = await authProvider.getProviders();
6585
setProvidersList(availProviders ?? []);
6686
});

0 commit comments

Comments
 (0)