Added profile edit page
This commit is contained in:
parent
f687983b45
commit
5eb78b4440
@ -61,6 +61,17 @@ class Api
|
||||
}
|
||||
}
|
||||
|
||||
if ($table == 'users') {
|
||||
unset($get['data']['salt']);
|
||||
}
|
||||
|
||||
if (is_array($get['data'])) {
|
||||
$get['status'] = true;
|
||||
} else {
|
||||
$get['status'] = false;
|
||||
$get['message'] = $get['data'];
|
||||
unset($get['data']);
|
||||
}
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($get);
|
||||
|
@ -240,4 +240,53 @@ class Home
|
||||
'user' => $user
|
||||
]);
|
||||
}
|
||||
|
||||
public function editProfile($args) {
|
||||
$user = Access::showAll([
|
||||
['id', '=', $args['id']]
|
||||
]);
|
||||
|
||||
if (is_array($user)) {
|
||||
if (Hash::compare($args['old_password'], $user['salt'], $args['password'])) {
|
||||
unset($args['old_password']);
|
||||
$args['password'] = $args['new_password'];
|
||||
unset($args['new_password']);
|
||||
$args['password'] = Hash::make($args['password'], $user['salt']);
|
||||
$data = Access::update($args, $args['id']);
|
||||
if ($data) {
|
||||
if (isset($_SERVER['HTTP_CLIENT']) && $_SERVER['HTTP_CLIENT'] == 'api') {
|
||||
echo json_encode([
|
||||
'status' => true,
|
||||
'route_to' => '/user' . '/' . $args['id'],
|
||||
'message' => 'Proses berhasil'
|
||||
]);die();
|
||||
}
|
||||
} else {
|
||||
if (isset($_SERVER['HTTP_CLIENT']) && $_SERVER['HTTP_CLIENT'] == 'api') {
|
||||
echo json_encode([
|
||||
'status' => false,
|
||||
'route_to' => '/user' . '/' . $args['id'],
|
||||
'message' => 'Proses gagal'
|
||||
]);die();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isset($_SERVER['HTTP_CLIENT']) && $_SERVER['HTTP_CLIENT'] == 'api') {
|
||||
echo json_encode([
|
||||
'status' => false,
|
||||
'route_to' => '/user' . '/' . $args['id'],
|
||||
'message' => 'Password lama tidak sama'
|
||||
]);die();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isset($_SERVER['HTTP_CLIENT']) && $_SERVER['HTTP_CLIENT'] == 'api') {
|
||||
echo json_encode([
|
||||
'status' => false,
|
||||
'route_to' => '/user' . '/' . $args['id'],
|
||||
'message' => 'User tidak ditemukan'
|
||||
]);die();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -245,3 +245,7 @@ h1 {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
.noTrans {
|
||||
transition: none;
|
||||
}
|
||||
|
@ -12,7 +12,6 @@ var createPost = {
|
||||
category.loadList(1)
|
||||
},
|
||||
oncreate: function() {
|
||||
clearInterval(window.intv)
|
||||
var valid_at = rome(left, {
|
||||
dateValidator: rome.val.beforeEq(right),
|
||||
time: false,
|
||||
|
@ -46,6 +46,17 @@ var nav = {
|
||||
}),
|
||||
' User'
|
||||
]) : null,
|
||||
m('a.navy.button', {
|
||||
'data-tooltip': 'Profil',
|
||||
onclick: function() {
|
||||
m.route.set('/user/' + window.location.search.split('&')[1].slice('2'))
|
||||
}
|
||||
}, [
|
||||
m('i.fa.fa-user-circle-o', {
|
||||
'aria-hidden': 'true'
|
||||
}),
|
||||
' Profil'
|
||||
]),
|
||||
m('a.navy.button', {
|
||||
'data-tooltip': 'Keluar',
|
||||
onclick: function() {user.logout()}
|
||||
|
@ -23,6 +23,9 @@ var showPost = {
|
||||
style: 'padding: 0 .6em'
|
||||
}, m(listAdmin))
|
||||
])))
|
||||
},
|
||||
onremove: function() {
|
||||
clearInterval(window.intv)
|
||||
}
|
||||
}
|
||||
|
||||
|
110
assets/js/components/userProfile.js
Normal file
110
assets/js/components/userProfile.js
Normal file
@ -0,0 +1,110 @@
|
||||
let m = require('mithril')
|
||||
let fecha = require('fecha')
|
||||
let user = require('../models/user')
|
||||
let Loading = require('./Loading')
|
||||
|
||||
var userProfile = {
|
||||
changePassword: false,
|
||||
oninit: function(vnode) {
|
||||
user.current = {}
|
||||
user.loadCurrent(vnode.attrs.id)
|
||||
},
|
||||
oncreate: function() {
|
||||
userProfile.changePassword = false
|
||||
},
|
||||
view: function() {
|
||||
return m('main.documentation', m('section', [
|
||||
user.loading ? m(Loading) :
|
||||
m('form', {
|
||||
onsubmit: function(e) {
|
||||
e.preventDefault()
|
||||
user.editProfile()
|
||||
}
|
||||
}, [
|
||||
m('h1', m('input', {
|
||||
type: 'text',
|
||||
required: 'required',
|
||||
placeholder: 'Nama Lengkap',
|
||||
value: user.current.full_name,
|
||||
onclick: function() {
|
||||
user.current.full_name = ''
|
||||
},
|
||||
oninput: m.withAttr('value', function(value) {
|
||||
user.current.full_name = value
|
||||
})
|
||||
})),
|
||||
m('table.full', [
|
||||
m('tr.full', [
|
||||
m('td', 'Username'),
|
||||
m('td', ':'),
|
||||
m('td', user.current.username)
|
||||
]),
|
||||
m('tr', [
|
||||
m('td', 'Password'),
|
||||
m('td', ':'),
|
||||
m('td', [
|
||||
m('input.full.noTrans#nPwd', {
|
||||
type: 'password',
|
||||
required: 'required',
|
||||
placeholder: 'Password Baru',
|
||||
value: user.current.new_password,
|
||||
onclick: function() {
|
||||
user.current.new_password = ''
|
||||
this.className = 'third noTrans'
|
||||
userProfile.changePassword = true
|
||||
},
|
||||
oninput: m.withAttr('value', function(value) {
|
||||
user.current.new_password = value
|
||||
})
|
||||
}),
|
||||
m('input.third#oPwd', {
|
||||
type: 'password',
|
||||
required: 'required',
|
||||
style: userProfile.changePassword ?
|
||||
'display: inline-block;'
|
||||
: 'display: none;',
|
||||
placeholder: 'Password Lama',
|
||||
oninput: m.withAttr('value', function(value) {
|
||||
user.current.old_password = value
|
||||
})
|
||||
}),
|
||||
m('input.third#rNPwd', {
|
||||
type: 'password',
|
||||
required: 'required',
|
||||
style: userProfile.changePassword ?
|
||||
'display: inline-block;'
|
||||
: 'display: none;',
|
||||
placeholder: 'Ulang Password Baru',
|
||||
oninput: m.withAttr('value', function(value) {
|
||||
user.current.re_new_password = value
|
||||
})
|
||||
})
|
||||
])
|
||||
]),
|
||||
m('tr', [
|
||||
m('td', 'Hak Akses'),
|
||||
m('td', ':'),
|
||||
m('td', user.current.privilege == 1 ? 'Admin' : 'User')
|
||||
]),
|
||||
m('tr', [
|
||||
m('td', 'Registrasi'),
|
||||
m('td', ':'),
|
||||
m('td', fecha.format(new Date(user.current.registered_at), 'YYYY-MM-DD'))
|
||||
])
|
||||
]),
|
||||
m('button.full.pseudo', {
|
||||
type: 'submit',
|
||||
}, [
|
||||
m('i.fa.fa-check-square-o', {
|
||||
'aria-hidden': 'true'
|
||||
}),
|
||||
m('span', {
|
||||
style: 'font-size: smaller;'
|
||||
}, ' Simpan')
|
||||
])
|
||||
])
|
||||
]))
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = userProfile
|
@ -6,6 +6,7 @@ let showPost = require('./components/showPost')
|
||||
let createCategory = require('./components/createCategory')
|
||||
let editCategory = require('./components/editCategory')
|
||||
let registerUser = require('./components/registerUser')
|
||||
let userProfile = require('./components/userProfile')
|
||||
let createPost = require('./components/createPost')
|
||||
let editPost = require('./components/editPost')
|
||||
let cookie = require('./others/cookie')
|
||||
@ -64,6 +65,16 @@ if (page == '') {
|
||||
])
|
||||
}
|
||||
},
|
||||
'/user/:id': { view: function(vnode) {
|
||||
return m('span',
|
||||
window.message || window.message != null ?
|
||||
m(label) : null,
|
||||
[
|
||||
m(nav),
|
||||
m(userProfile, { 'id': vnode.attrs.id })
|
||||
])
|
||||
}
|
||||
},
|
||||
'/posts/edit/:id': {
|
||||
view: function(vnode) {
|
||||
return m('span',
|
||||
|
@ -1,7 +1,26 @@
|
||||
let m = require('mithril')
|
||||
let _ = require('lodash')
|
||||
|
||||
var user = {
|
||||
current: {},
|
||||
loading: false,
|
||||
loadCurrent: function(id) {
|
||||
user.loading = true
|
||||
return m.request({
|
||||
method: 'GET',
|
||||
url: '/api/users/' + id,
|
||||
withCredentials: true
|
||||
})
|
||||
.then(function(result) {
|
||||
if (result.status == true) {
|
||||
user.current = result.data
|
||||
user.current.new_password = user.current.password
|
||||
} else {
|
||||
window.message = result.message
|
||||
}
|
||||
user.loading = false
|
||||
})
|
||||
},
|
||||
login: function() {
|
||||
return m.request({
|
||||
method: 'POST',
|
||||
@ -40,12 +59,32 @@ var user = {
|
||||
headers: {client: 'api', 'x-query': window.location.search}
|
||||
})
|
||||
.then(function(response) {
|
||||
console.log(response);
|
||||
if (response.status == true) {
|
||||
m.route.set(response.route_to)
|
||||
}
|
||||
window.message = response.message
|
||||
})
|
||||
},
|
||||
editProfile: function() {
|
||||
if (_.isEqual(user.current.re_new_password, user.current.new_password)) {
|
||||
_.unset(user.current, 're_new_password')
|
||||
return m.request({
|
||||
method: 'POST',
|
||||
url: '/edit-profile/' + window.location.search,
|
||||
data: user.current,
|
||||
withCredentials: true,
|
||||
headers: {client: 'api', 'x-query': window.location.search}
|
||||
})
|
||||
.then(function(response) {
|
||||
if (response.status == true) {
|
||||
user.logout()
|
||||
}
|
||||
window.message = response.message
|
||||
})
|
||||
} else {
|
||||
window.message = 'Password baru tidak sama'
|
||||
m.redraw()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -245,3 +245,7 @@ h1 {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
.noTrans {
|
||||
transition: none;
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user