Skip to content
This repository was archived by the owner on Mar 4, 2022. It is now read-only.

Commit 4209f2e

Browse files
committed
Hide organizer dropdown when user has insufficient permissions
1 parent b00f5f4 commit 4209f2e

File tree

1 file changed

+27
-91
lines changed

1 file changed

+27
-91
lines changed

frontend/src/components/Common/Navbar.js

Lines changed: 27 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,22 @@ const CommonNav = () => (
1212
</React.Fragment>
1313
);
1414

15+
const OrganizerDropdown = ({ user }) => (
16+
<NavDropdown title="Organizers" id="protected-nav-dropdown">
17+
<style>{'.privateItem a {padding-top: 5px !important;}'}</style>
18+
{hasPermission(user, 'permissions') && (
19+
<MenuItem className="privateItem" href={routes.PERMISSIONS}>
20+
Permissions
21+
</MenuItem>
22+
)}
23+
{hasPermission(user, 'credentials') && (
24+
<MenuItem className="privateItem" href={routes.CREDENTIALS}>
25+
Credentials
26+
</MenuItem>
27+
)}
28+
</NavDropdown>
29+
);
30+
1531
const PHNavbar = ({ auth, id, user }) => (
1632
<Navbar collapseOnSelect bsStyle="default" style={{ marginBottom: '10px', maxWidth: '100%' }}>
1733
<Navbar.Header>
@@ -31,19 +47,9 @@ const PHNavbar = ({ auth, id, user }) => (
3147
<Link to={`/member/${id}`}>Profile</Link>
3248
</li>
3349
<CommonNav />
34-
<NavDropdown title="Organizers" id="protected-nav-dropdown">
35-
<style>{`.privateItem a {padding-top: 5px !important;}`}</style>
36-
{hasPermission(user, 'permissions') && (
37-
<MenuItem className="privateItem" href={routes.PERMISSIONS}>
38-
Permissions
39-
</MenuItem>
40-
)}
41-
{hasPermission(user, 'credentials') && (
42-
<MenuItem className="privateItem" href={routes.CREDENTIALS}>
43-
Credentials
44-
</MenuItem>
45-
)}
46-
</NavDropdown>
50+
{(hasPermission(user, 'permissions') || hasPermission(user, 'credentials')) && (
51+
<OrganizerDropdown user={user} />
52+
)}
4753
<li role="presentation">
4854
<Link to={routes.LOGOUT}>Logout</Link>
4955
</li>
@@ -60,91 +66,21 @@ const PHNavbar = ({ auth, id, user }) => (
6066
</Navbar>
6167
);
6268

63-
// const CommonNav = () => (
64-
// <React.Fragment>
65-
// <li>
66-
// <Link to="/members">Members</Link>
67-
// </li>
68-
// <li>
69-
// <Link to="/events">Events</Link>
70-
// </li>
71-
// <li>
72-
// <Link to="/calendar">Calendar</Link>
73-
// </li>
74-
// </React.Fragment>
75-
// );
76-
77-
// const Navbars = ({ auth, id }) => (
78-
// <nav className="navbar navbar-default navbar-static-top">
79-
// <div className="container">
80-
// <div className="navbar-header">
81-
// <button
82-
// type="button"
83-
// className="navbar-toggle collapsed"
84-
// data-toggle="collapse"
85-
// data-target="#navbar"
86-
// aria-expanded="false"
87-
// aria-controls="navbar"
88-
// >
89-
// <span className="sr-only">Toggle navigation</span>
90-
// <span className="icon-bar" />
91-
// <span className="icon-bar" />
92-
// <span className="icon-bar" />
93-
// </button>
94-
// <Link id="nav-brand" className="navbar-brand" to="/">
95-
// <div className="nav-logo" />
96-
// <span className="nav-name">Purdue Hackers</span>
97-
// </Link>
98-
// </div>
99-
// <div className="collapse navbar-collapse" id="navbar">
100-
// <ul className="nav navbar-nav navbar-right">
101-
// {auth && id ? (
102-
// <React.Fragment>
103-
// <li>
104-
// <Link to={`/member/${id}`}>Profile</Link>
105-
// </li>
106-
107-
// <CommonNav />
108-
// <li>
109-
// <Link to="/logout">Logout</Link>
110-
// </li>
111-
// </React.Fragment>
112-
// ) : (
113-
// <React.Fragment>
114-
// <CommonNav />
115-
// <li>
116-
// <Link to="/login">Login</Link>
117-
// </li>
118-
// <li>
119-
// <Link to="/signup">Join</Link>
120-
// </li>
121-
// </React.Fragment>
122-
// )}
123-
// </ul>
124-
// </div>
125-
// </div>
126-
// </nav>
127-
// );
128-
129-
// Navbar.propTypes = {
130-
// auth: PropTypes.bool,
131-
// id: PropTypes.string
132-
// };
133-
134-
// Navbar.defaultProps = {
135-
// auth: null,
136-
// id: null
137-
// };
138-
13969
PHNavbar.propTypes = {
14070
auth: PropTypes.bool,
141-
id: PropTypes.string
71+
id: PropTypes.string,
72+
user: PropTypes.object
14273
};
14374

14475
PHNavbar.defaultProps = {
14576
auth: null,
146-
id: null
77+
id: null,
78+
user: null
14779
};
14880

81+
OrganizerDropdown.propTypes = { user: PropTypes.object };
82+
83+
OrganizerDropdown.defaultProps = { user: null };
84+
14985
// export default Navbar;
15086
export default PHNavbar;

0 commit comments

Comments
 (0)