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');
|
header('Content-Type: application/json');
|
||||||
echo json_encode($get);
|
echo json_encode($get);
|
||||||
|
@ -240,4 +240,53 @@ class Home
|
|||||||
'user' => $user
|
'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);
|
transform: scale(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.noTrans {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
@ -12,7 +12,6 @@ var createPost = {
|
|||||||
category.loadList(1)
|
category.loadList(1)
|
||||||
},
|
},
|
||||||
oncreate: function() {
|
oncreate: function() {
|
||||||
clearInterval(window.intv)
|
|
||||||
var valid_at = rome(left, {
|
var valid_at = rome(left, {
|
||||||
dateValidator: rome.val.beforeEq(right),
|
dateValidator: rome.val.beforeEq(right),
|
||||||
time: false,
|
time: false,
|
||||||
|
@ -46,6 +46,17 @@ var nav = {
|
|||||||
}),
|
}),
|
||||||
' User'
|
' User'
|
||||||
]) : null,
|
]) : 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', {
|
m('a.navy.button', {
|
||||||
'data-tooltip': 'Keluar',
|
'data-tooltip': 'Keluar',
|
||||||
onclick: function() {user.logout()}
|
onclick: function() {user.logout()}
|
||||||
|
@ -23,6 +23,9 @@ var showPost = {
|
|||||||
style: 'padding: 0 .6em'
|
style: 'padding: 0 .6em'
|
||||||
}, m(listAdmin))
|
}, 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 createCategory = require('./components/createCategory')
|
||||||
let editCategory = require('./components/editCategory')
|
let editCategory = require('./components/editCategory')
|
||||||
let registerUser = require('./components/registerUser')
|
let registerUser = require('./components/registerUser')
|
||||||
|
let userProfile = require('./components/userProfile')
|
||||||
let createPost = require('./components/createPost')
|
let createPost = require('./components/createPost')
|
||||||
let editPost = require('./components/editPost')
|
let editPost = require('./components/editPost')
|
||||||
let cookie = require('./others/cookie')
|
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': {
|
'/posts/edit/:id': {
|
||||||
view: function(vnode) {
|
view: function(vnode) {
|
||||||
return m('span',
|
return m('span',
|
||||||
|
@ -1,7 +1,26 @@
|
|||||||
let m = require('mithril')
|
let m = require('mithril')
|
||||||
|
let _ = require('lodash')
|
||||||
|
|
||||||
var user = {
|
var user = {
|
||||||
current: {},
|
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() {
|
login: function() {
|
||||||
return m.request({
|
return m.request({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@ -40,12 +59,32 @@ var user = {
|
|||||||
headers: {client: 'api', 'x-query': window.location.search}
|
headers: {client: 'api', 'x-query': window.location.search}
|
||||||
})
|
})
|
||||||
.then(function(response) {
|
.then(function(response) {
|
||||||
console.log(response);
|
|
||||||
if (response.status == true) {
|
if (response.status == true) {
|
||||||
m.route.set(response.route_to)
|
m.route.set(response.route_to)
|
||||||
}
|
}
|
||||||
window.message = response.message
|
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);
|
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