Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
planner-team-one
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
21
Issues
21
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
Евгений Положенцев
planner-team-one
Commits
5b0ba753
Commit
5b0ba753
authored
Dec 09, 2022
by
Ermolaev Timur
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'task-92-enhance/optimize-header' into 'development'
Task 92 enhance/optimize header See merge request
!68
parents
341f950a
9b875917
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
120 additions
and
169 deletions
+120
-169
users.ts
planner-api/src/routers/users.ts
+1
-0
AdminMenu.js
planner-front/src/components/Menus/AdminMenu/AdminMenu.js
+18
-86
AnonymousMenu.js
...front/src/components/Menus/AnonymousMenu/AnonymousMenu.js
+14
-7
ProfileBlock.js
...r-front/src/components/Menus/ProfileBlock/ProfileBlock.js
+45
-0
WorkerMenu.js
planner-front/src/components/Menus/WorkerMenu/WorkerMenu.js
+19
-70
constants.js
planner-front/src/constants.js
+21
-0
usersActions.js
planner-front/src/store/actions/usersActions.js
+2
-6
No files found.
planner-api/src/routers/users.ts
View file @
5b0ba753
...
...
@@ -100,6 +100,7 @@ router.delete('/sessions', async(req: Request, res: Response):Promise<void | obj
if
(
!
user
)
return
res
.
send
({
successMsg
});
user
.
token
=
nanoid
();
await
user
.
save
();
return
res
.
send
(
successMsg
)
})
...
...
planner-front/src/components/Menus/AdminMenu/AdminMenu.js
View file @
5b0ba753
import
{
Button
,
Menu
,
MenuItem
}
from
"@mui/material"
;
import
{
useState
}
from
"react"
;
import
{
useDispatch
,
useSelector
}
from
"react-redux"
;
import
{
NavLink
,
useNavigate
}
from
"react-router-dom"
;
import
{
logoutUser
}
from
"../../../store/actions/usersActions"
;
import
{
Button
}
from
"@mui/material"
;
import
{
NavLink
}
from
"react-router-dom"
;
import
{
superuserMenuButtons
}
from
"../../../constants"
;
import
ProfileBlock
from
"../ProfileBlock/ProfileBlock"
;
const
AdminMenu
=
()
=>
{
const
dispatch
=
useDispatch
();
const
navigate
=
useNavigate
()
const
[
anchorEl
,
setAnchorEl
]
=
useState
(
null
);
const
open
=
Boolean
(
anchorEl
);
const
user
=
useSelector
(
state
=>
state
.
users
.
user
)
const
handleClick
=
(
event
)
=>
{
setAnchorEl
(
event
.
currentTarget
);
};
const
handleClose
=
()
=>
{
setAnchorEl
(
null
);
};
const
logout
=
()
=>
{
dispatch
(
logoutUser
(
navigate
));
handleClose
()
}
return
<>
<
Button
component
=
{
NavLink
}
to
=
"/projects"
color
=
"inherit"
size
=
"large"
>
Проекты
<
/Button
>
<
Button
component
=
{
NavLink
}
to
=
"/week"
color
=
"inherit"
size
=
"large"
>
Неделя
<
/Button
>
<
Button
component
=
{
NavLink
}
to
=
"/month"
color
=
"inherit"
size
=
"large"
id
=
'test_month_header'
>
Месяц
<
/Button
>
<
Button
component
=
{
NavLink
}
to
=
"/my-tasks"
color
=
"inherit"
size
=
"large"
>
Мои
задачи
<
/Button
>
<
Button
component
=
{
NavLink
}
to
=
"/workers-tasks"
color
=
"inherit"
size
=
"large"
>
Задачи
сотрудников
<
/Button
>
<
Button
component
=
{
NavLink
}
to
=
"/sign-up"
color
=
"inherit"
size
=
"large"
>
Создать
сотрудника
<
/Button
>
<
Button
color
=
"inherit"
onClick
=
{
handleClick
}
id
=
'test_greetings'
>
Hello
,
{
user
?.
displayName
}
<
/Button
>
<
Menu
anchorEl
=
{
anchorEl
}
open
=
{
open
}
onClose
=
{
handleClose
}
>
<
MenuItem
component
=
{
NavLink
}
to
=
"/profile/test"
color
=
"inherit"
onClick
=
{
handleClose
}
>
Profile
<
/MenuItem
>
<
MenuItem
onClick
=
{
logout
}
>
Logout
<
/MenuItem
>
<
/Menu
>
{
superuserMenuButtons
.
map
((
button
,
i
)
=>
{
return
(
<
Button
key
=
{
i
}
component
=
{
NavLink
}
to
=
{
button
.
path
}
color
=
"inherit"
size
=
"large"
>
{
button
.
text
}
<
/Button
>
)
})}
<
ProfileBlock
/>
<
/
>
};
...
...
planner-front/src/components/Menus/AnonymousMenu/AnonymousMenu.js
View file @
5b0ba753
import
{
Button
}
from
"@mui/material"
;
import
{
NavLink
}
from
"react-router-dom"
;
import
{
anonymoysMenuButtons
}
from
"../../../constants"
;
const
AnonymousMenu
=
()
=>
{
return
<>
<
Button
component
=
{
NavLink
}
color
=
"inherit"
to
=
"/sign-in"
>
Вход
<
/Button
>
{
anonymoysMenuButtons
.
map
((
button
,
i
)
=>
{
return
(
<
Button
key
=
{
i
}
component
=
{
NavLink
}
to
=
{
button
.
path
}
color
=
"inherit"
size
=
"large"
>
{
button
.
text
}
<
/Button
>
)
})}
<
/
>
};
...
...
planner-front/src/components/Menus/ProfileBlock/ProfileBlock.js
0 → 100644
View file @
5b0ba753
import
{
Button
,
Menu
,
MenuItem
}
from
"@mui/material"
;
import
{
useState
}
from
"react"
;
import
{
useDispatch
,
useSelector
}
from
"react-redux"
;
import
{
NavLink
,
useNavigate
}
from
"react-router-dom"
;
import
{
logoutUser
}
from
"../../../store/actions/usersActions"
;
const
ProfileBlock
=
()
=>
{
const
dispatch
=
useDispatch
();
const
navigate
=
useNavigate
()
const
[
anchorEl
,
setAnchorEl
]
=
useState
(
null
);
const
open
=
Boolean
(
anchorEl
);
const
user
=
useSelector
(
state
=>
state
.
users
.
user
)
const
handleClick
=
(
event
)
=>
{
setAnchorEl
(
event
.
currentTarget
);
};
const
handleClose
=
()
=>
{
setAnchorEl
(
null
);
};
const
logout
=
()
=>
{
dispatch
(
logoutUser
(
navigate
));
handleClose
()
}
return
<>
<
Button
color
=
"inherit"
onClick
=
{
handleClick
}
id
=
'test_greetings'
>
Hello
,
{
user
?.
displayName
}
<
/Button
>
<
Menu
anchorEl
=
{
anchorEl
}
open
=
{
open
}
onClose
=
{
handleClose
}
>
<
MenuItem
component
=
{
NavLink
}
to
=
"/profile/test"
color
=
"inherit"
onClick
=
{
handleClose
}
>
Profile
<
/MenuItem
>
<
MenuItem
onClick
=
{()
=>
{
logout
()}}
>
Logout
<
/MenuItem
>
<
/Menu
>
<
/
>
};
export
default
ProfileBlock
;
\ No newline at end of file
planner-front/src/components/Menus/WorkerMenu/WorkerMenu.js
View file @
5b0ba753
import
{
Button
,
Menu
,
MenuItem
}
from
"@mui/material"
;
import
{
useState
}
from
"react"
;
import
{
useDispatch
,
useSelector
}
from
"react-redux"
;
import
{
NavLink
,
useNavigate
}
from
"react-router-dom"
;
import
{
logoutUser
}
from
"../../../store/actions/usersActions"
;
import
{
Button
}
from
"@mui/material"
;
import
{
NavLink
}
from
"react-router-dom"
;
import
{
workerMenuButtons
}
from
"../../../constants"
;
import
ProfileBlock
from
"../ProfileBlock/ProfileBlock"
;
const
WorkerMenu
=
()
=>
{
const
dispatch
=
useDispatch
();
const
navigate
=
useNavigate
()
const
[
anchorEl
,
setAnchorEl
]
=
useState
(
null
);
const
open
=
Boolean
(
anchorEl
);
const
user
=
useSelector
(
state
=>
state
.
users
.
user
)
const
handleClick
=
(
event
)
=>
{
setAnchorEl
(
event
.
currentTarget
);
};
const
handleClose
=
()
=>
{
setAnchorEl
(
null
);
};
const
logout
=
()
=>
{
dispatch
(
logoutUser
(
navigate
));
handleClose
()
}
return
<>
<
Button
component
=
{
NavLink
}
to
=
"/projects"
color
=
"inherit"
size
=
"large"
>
Проекты
<
/Button
>
<
Button
component
=
{
NavLink
}
to
=
"/week"
color
=
"inherit"
size
=
"large"
>
Неделя
<
/Button
>
<
Button
component
=
{
NavLink
}
to
=
"/month"
color
=
"inherit"
size
=
"large"
id
=
'test_month_header'
>
Месяц
<
/Button
>
<
Button
component
=
{
NavLink
}
to
=
"/my-tasks"
color
=
"inherit"
size
=
"large"
>
Мои
задачи
<
/Button
>
<
Button
color
=
"inherit"
onClick
=
{
handleClick
}
id
=
'test_greetings'
>
Hello
,
{
user
?.
displayName
}
<
/Button
>
<
Menu
anchorEl
=
{
anchorEl
}
open
=
{
open
}
onClose
=
{
handleClose
}
>
<
MenuItem
component
=
{
NavLink
}
to
=
"/profile/test"
color
=
"inherit"
onClick
=
{
handleClose
}
>
Profile
<
/MenuItem
>
<
MenuItem
onClick
=
{
logout
}
>
Logout
<
/MenuItem
>
<
/Menu
>
{
workerMenuButtons
.
map
((
button
,
i
)
=>
{
return
(
<
Button
key
=
{
i
}
component
=
{
NavLink
}
to
=
{
button
.
path
}
color
=
"inherit"
size
=
"large"
>
{
button
.
text
}
<
/Button
>
)
})}
<
ProfileBlock
/>
<
/
>
};
...
...
planner-front/src/constants.js
View file @
5b0ba753
export
const
apiUrl
=
"http://localhost:8000"
;
export
const
uploadsUrl
=
`
${
apiUrl
}
/uploads`
;
export
const
workerMenuButtons
=
[
{
text
:
'Проекты'
,
path
:
'/projects'
},
{
text
:
'Неделя'
,
path
:
'/week'
},
{
text
:
'Месяц'
,
path
:
'/month'
},
{
text
:
'Мои задачи'
,
path
:
'/my-tasks'
}
]
export
const
superuserMenuButtons
=
[
{
text
:
'Проекты'
,
path
:
'/projects'
},
{
text
:
'Неделя'
,
path
:
'/week'
},
{
text
:
'Месяц'
,
path
:
'/month'
},
{
text
:
'Мои задачи'
,
path
:
'/my-tasks'
},
{
text
:
'Задачи Сотрудников'
,
path
:
'/workers-tasks'
},
{
text
:
'Создать Сотрудника'
,
path
:
'/sign-up'
}
]
export
const
anonymoysMenuButtons
=
[
{
text
:
'Вход'
,
path
:
'/sign-in'
},
]
\ No newline at end of file
planner-front/src/store/actions/usersActions.js
View file @
5b0ba753
...
...
@@ -85,13 +85,9 @@ export const forgottenPassword = (userData, navigate) => {
}
export
const
logoutUser
=
(
navigate
)
=>
{
return
async
(
dispatch
,
getState
)
=>
{
return
async
(
dispatch
)
=>
{
try
{
await
axios
.
delete
(
"/users/sessions"
,
{
headers
:
{
'Authorization'
:
getState
().
users
.
user
?.
token
}
});
await
axios
.
delete
(
"/users/sessions"
);
dispatch
(
logoutUserSuccess
());
navigate
(
"/"
);
dispatch
(
showNotification
(
"Вы успешно вышли"
));
...
...
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