Skip to content

Commit

Permalink
Added new emails, verification process, user creation
Browse files Browse the repository at this point in the history
  • Loading branch information
foyzulkarim committed Apr 29, 2022
1 parent 7488f25 commit 9d001dc
Show file tree
Hide file tree
Showing 15 changed files with 513 additions and 37 deletions.
6 changes: 6 additions & 0 deletions client-pro/config/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,12 @@ export default defineConfig({
name: 'resetpassword',
component: './user/resetpassword',
},
{
path: '/user/activateaccount',
layout: false,
name: 'activateaccount',
component: './user/activateaccount',
},
{
component: '404',
},
Expand Down
4 changes: 3 additions & 1 deletion client-pro/src/app.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const loginPath = '/user/login';
const registerPath = '/user/register';
const forgotpasswordPath = '/user/forgotpassword';
const resetpasswordPath = '/user/resetpassword';
const activateaccountPath = '/user/activateaccount';
/** 获取用户信息比较慢的时候会展示一个 loading */

export const initialStateConfig = {
Expand Down Expand Up @@ -60,7 +61,8 @@ export const layout = ({ initialState }) => {
console.log('onPageChange', location.pathname, initialState);

if (!authStr || (JSON.parse(authStr).isAuthenticated) === false) {
if (location.pathname === loginPath || location.pathname === registerPath || location.pathname === forgotpasswordPath || location.pathname === resetpasswordPath) {
const allowedPath = [loginPath, registerPath, forgotpasswordPath, resetpasswordPath, activateaccountPath];
if (allowedPath.indexOf(location.pathname) !== -1) {
history.push(location);
}
else history.push(loginPath);
Expand Down
23 changes: 9 additions & 14 deletions client-pro/src/pages/user/Login/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,26 +54,21 @@ const Login = () => {
// 登录
console.log('values', values, type);
const msg = await login({ ...values, type });
console.log('1.Login>handleSubmit>response', msg);

if (msg.status === 'ok') {
const defaultLoginSuccessMessage = intl.formatMessage({
id: 'pages.login.success',
defaultMessage: '登录成功!',
});
message.success(defaultLoginSuccessMessage);

if (msg instanceof Error) {
message.error(msg.message);
}
else {
console.log('msg', msg);
await setUserInfo(msg);
/** 此方法会跳转到 redirect 参数所在的位置 */

if (!history) return;
const { query } = history.location;
const { redirect } = query;
setUserLoginState(msg);
history.push(redirect || '/');
return;
} // 如果失败去设置用户错误信息

setUserLoginState(msg);
}
} catch (error) {
const defaultLoginFailureMessage = intl.formatMessage({
id: 'pages.login.failure',
Expand Down Expand Up @@ -138,14 +133,14 @@ const Login = () => {
/>
</Tabs>

{status === 'error' && loginType === 'account' && (
{/* {status === 'error' && loginType === 'account' && (
<LoginMessage
content={intl.formatMessage({
id: 'pages.login.accountLogin.errorMessage',
defaultMessage: '账户或密码错误(admin/ant.design)',
})}
/>
)}
)} */}
{type === 'account' && (
<>
<ProFormText
Expand Down
31 changes: 31 additions & 0 deletions client-pro/src/pages/user/activateaccount/index.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import React, { useEffect } from 'react';
import ProForm, { ProFormCaptcha, ProFormCheckbox, ProFormText } from '@ant-design/pro-form';
import { LockOutlined, MailOutlined, } from '@ant-design/icons';
import { Form, message, Tabs, Button } from 'antd';
import Footer from '@/components/Footer';
import { useIntl, Link, history, FormattedMessage, SelectLang, useModel } from 'umi';
import { activateAccount } from './service';
import styles from './index.less';

const ActivateAccount = (props) => {

useEffect(() => {
const { token } = props.location.query;
console.log('token', token);
const verify = async () => {
const result = await activateAccount({ token });
if (result instanceof Error) {
message.error(result.message);
}
else {
message.success(result.message);
}
history.push('/user/login');
};
verify();
}, []);

return (<></>);
}

export default ActivateAccount;
114 changes: 114 additions & 0 deletions client-pro/src/pages/user/activateaccount/index.less
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
@import '~antd/es/style/themes/default.less';

.container {
display: flex;
flex-direction: column;
height: 100vh;
overflow: auto;
background: @layout-body-background;
}

.lang {
width: 100%;
height: 40px;
line-height: 44px;
text-align: right;
:global(.ant-dropdown-trigger) {
margin-right: 24px;
}
}

.content {
flex: 1;
padding: 32px 0;
}

@media (min-width: @screen-md-min) {
.container {
background-image: url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg');
background-repeat: no-repeat;
background-position: center 110px;
background-size: 100%;
}

.content {
padding: 32px 0 24px;
}
}

.top {
text-align: center;
}

.header {
height: 44px;
line-height: 44px;
a {
text-decoration: none;
}
}

.logo {
height: 44px;
margin-right: 16px;
vertical-align: top;
}

.title {
position: relative;
top: 2px;
color: @heading-color;
font-weight: 600;
font-size: 33px;
font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
}

.desc {
margin-top: 12px;
margin-bottom: 40px;
color: @text-color-secondary;
font-size: @font-size-base;
}

.main {
width: 328px;
margin: 0 auto;
@media screen and (max-width: @screen-sm) {
width: 95%;
max-width: 328px;
}

:global {
.@{ant-prefix}-tabs-nav-list {
margin: auto;
font-size: 16px;
}
}

.icon {
margin-left: 16px;
color: rgba(0, 0, 0, 0.2);
font-size: 24px;
vertical-align: middle;
cursor: pointer;
transition: color 0.3s;

&:hover {
color: @primary-color;
}
}

.other {
margin-top: 24px;
line-height: 22px;
text-align: left;
.register {
float: right;
}
}

.prefixIcon {
color: @primary-color;
font-size: @font-size-base;
}
}
6 changes: 6 additions & 0 deletions client-pro/src/pages/user/activateaccount/service.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { get, post, put, del } from '/src/services/http-service';

export async function activateAccount(params) {
const result = await post(`/api/auth/activate-account`, params);
return result;
}
1 change: 1 addition & 0 deletions server/.env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ DEFAULT_PAGE_SIZE=10
SENDGRID_API_KEY=123
FRONTEND_URL=http://localhost:8000
EMAIL_SENDER=info@bizbook365.com
DEFAULT_EMAIL_RECEIVER=foyzulkarim@gmail.com
1 change: 1 addition & 0 deletions server/setup/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ const migrate = async (logger) => {
updatedBy: superadminUser._id,
roleId: adminRole._id,
roleAlias: adminRole.alias,
isActive: true,
},
"User"
);
Expand Down
Loading

0 comments on commit 9d001dc

Please sign in to comment.