Fakultas Ilmu Komputer UI
Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Fasilkom UI Open Source Software
Kape
Commits
f0afd1b4
Commit
f0afd1b4
authored
Mar 28, 2017
by
Zamil Majdy
Browse files
[#140654507] #13 Add login redirection
parent
f86c1bbb
Changes
6
Hide whitespace changes
Inline
Side-by-side
assets/js/Index.jsx
View file @
f0afd1b4
...
...
@@ -35,11 +35,11 @@ export default class App extends React.Component {
<
Route
path
=
"/register"
component
=
{
CompanyRegister
}
/>
<
Route
component
=
{
Dashboard
}
onEnter
=
{
this
.
handleAuth
}
>
<
Route
path
=
"/"
component
=
{
Profile
}
/>
<
Route
path
=
"profile"
component
=
{
Profile
}
/>
<
Route
path
=
"lowongan"
component
=
{
VacancyPage
}
/>
<
Route
path
=
"users"
component
=
{
Profile
}
/>
<
Route
path
=
"
/
profile"
component
=
{
Profile
}
/>
<
Route
path
=
"
/
lowongan"
component
=
{
VacancyPage
}
/>
<
Route
path
=
"
/
users"
component
=
{
Profile
}
/>
</
Route
>
<
Redirect
from
=
"*"
to
=
"
/login
"
/>
<
Redirect
from
=
"*"
to
=
{
Server
.
isLoggedIn
()
?
'
/lowongan
'
:
'
/login
'
}
/>
</
Router
>
);
}
...
...
assets/js/components/LoginForm.jsx
View file @
f0afd1b4
...
...
@@ -2,6 +2,7 @@ import React from 'react';
import
{
Form
,
Input
,
Button
,
Message
,
Image
}
from
'
semantic-ui-react
'
;
import
{
browserHistory
}
from
'
react-router
'
;
import
Server
from
'
../lib/Server
'
;
import
Storage
from
'
../lib/Storage
'
;
export
default
class
LoginForm
extends
React
.
Component
{
...
...
@@ -21,7 +22,7 @@ export default class LoginForm extends React.Component {
constructor
(
props
)
{
super
(
props
);
/* istanbul ignore next */
this
.
state
=
{
email
:
''
,
password
:
''
,
errorFlag
:
false
};
this
.
state
=
{
username
:
''
,
password
:
''
,
errorFlag
:
false
};
this
.
handleChange
=
this
.
handleChange
.
bind
(
this
);
this
.
handleSubmit
=
this
.
handleSubmit
.
bind
(
this
);
}
...
...
@@ -33,11 +34,13 @@ export default class LoginForm extends React.Component {
handleSubmit
(
event
)
{
event
.
preventDefault
();
const
data
=
{
type
:
this
.
props
.
type
,
email
:
this
.
state
.
email
,
'
login-
type
'
:
this
.
props
.
type
,
username
:
this
.
state
.
username
,
password
:
this
.
state
.
password
,
};
Server
.
post
(
'
api/login/
'
,
data
).
then
(()
=>
{
Server
.
post
(
'
/login/
'
,
data
).
then
((
response
)
=>
{
Storage
.
set
(
'
user-data
'
,
response
);
browserHistory
.
push
(
'
/home
'
);
},
()
=>
{
this
.
setState
({
errorFlag
:
true
});
...
...
@@ -52,8 +55,8 @@ export default class LoginForm extends React.Component {
</
div
>
<
Form
.
Group
widths
=
"equal"
>
<
Form
.
Field
required
>
<
label
htmlFor
=
"id"
>
Email
</
label
>
<
Input
type
=
"text"
id
=
"
email
"
icon
=
"user"
iconPosition
=
"left"
placeholder
=
"
email
"
onChange
=
{
e
=>
this
.
handleChange
(
e
,
'
email
'
)
}
required
/>
<
label
htmlFor
=
"id"
>
Username
</
label
>
<
Input
type
=
"text"
id
=
"
username
"
icon
=
"user"
iconPosition
=
"left"
placeholder
=
"
username
"
onChange
=
{
e
=>
this
.
handleChange
(
e
,
'
username
'
)
}
required
/>
</
Form
.
Field
>
</
Form
.
Group
>
...
...
@@ -67,7 +70,7 @@ export default class LoginForm extends React.Component {
<
Button
type
=
"submit"
fluid
color
=
"blue"
>
Login
</
Button
>
<
Message
error
content
=
"Login gagal:
email
atau password salah."
content
=
"Login gagal:
username
atau password salah."
/>
</
Form
>
...
...
assets/js/components/TopMenu.jsx
View file @
f0afd1b4
import
React
from
'
react
'
;
import
{
Menu
,
Image
}
from
'
semantic-ui-react
'
;
import
{
Link
}
from
'
react-router
'
;
import
{
Link
,
browserHistory
}
from
'
react-router
'
;
import
Server
from
'
../lib/Server
'
;
import
Storage
from
'
../lib/Storage
'
;
export
default
class
TopMenu
extends
React
.
Component
{
state
=
{
activeItem
:
'
home
'
};
constructor
(
props
)
{
super
(
props
);
/* istanbul ignore next */
this
.
logout
=
this
.
logout
.
bind
(
this
);
}
handleItemClick
=
(
e
,
{
name2
})
=>
this
.
setState
({
activeItem
:
name
})
logout
=
()
=>
{
Server
.
get
(
'
/api-auth/logout/?next=/
'
,
true
).
then
(()
=>
{
Storage
.
clear
();
browserHistory
.
push
(
'
/login
'
);
});
};
render
()
{
const
{
activeItem
}
=
this
.
state
return
(
<
Menu
pointing
secondary
>
<
Image
as
=
"a"
size
=
"small"
src
=
"/assets/img/logo.png"
href
=
"/"
/>
...
...
@@ -17,9 +27,9 @@ export default class TopMenu extends React.Component {
<
Menu
.
Item
as
=
{
Link
}
to
=
"/lowongan"
name
=
"home"
/>
<
Menu
.
Item
as
=
{
Link
}
to
=
"/profile"
name
=
"profil"
/>
{
Server
.
isLoggedIn
()
?
<
Menu
.
Item
as
=
{
Link
}
href
=
"/api/api-auth/logout/?next=/"
name
=
"logout"
/>
:
<
Menu
.
Item
as
=
{
Link
}
onClick
=
{
this
.
logout
}
name
=
"logout"
/>
:
<
Menu
.
Item
as
=
{
Link
}
to
=
"/login"
name
=
"login"
/>
}
}
</
Menu
.
Menu
>
</
Menu
>
);
...
...
assets/js/lib/Server.jsx
View file @
f0afd1b4
...
...
@@ -44,7 +44,7 @@ export default class Server {
if
(
response
.
status
===
204
)
{
return
response
;
}
return
response
.
json
()
;
return
response
;
});
/* istanbul ignore next */
...
...
core/views/accounts.py
View file @
f0afd1b4
...
...
@@ -31,6 +31,7 @@ class UserViewSet(viewsets.ModelViewSet):
return
[
AllowAny
()]
return
super
(
UserViewSet
,
self
).
get_permissions
()
class
StudentViewSet
(
viewsets
.
ModelViewSet
):
queryset
=
Student
.
objects
.
all
()
serializer_class
=
StudentSerializer
...
...
core/views/vacancies.py
View file @
f0afd1b4
from
rest_framework
import
viewsets
from
rest_framework.generics
import
get_object_or_404
from
rest_framework.permissions
import
IsAuthenticated
from
rest_framework.response
import
Response
from
core.lib.permissions
import
IsAdminOrStudent
,
IsAdminOrCompany
...
...
@@ -13,6 +14,11 @@ class VacancyViewSet(viewsets.ModelViewSet):
serializer_class
=
VacancySerializer
permission_classes
=
[
IsAdminOrCompany
]
def
get_permissions
(
self
):
if
self
.
action
in
[
"get"
,
"list"
]:
return
[
IsAuthenticated
()]
return
super
(
VacancyViewSet
,
self
).
get_permissions
()
class
ApplicationViewSet
(
viewsets
.
GenericViewSet
):
serializer_class
=
VacancySerializer
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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