Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function edit_with_signature($id) {
- $post_data = array_map(function($val) { return htmlspecialchars($val, ENT_QUOTES); }, $_POST);
- $signature = array_key_exists('signature', $post_data) ? $post_data['signature'] : null;
- if (empty($signature)) {
- return $this->send_error_message('Не перадана подпись (signature)');
- }
- $signature_fields = $post_data;
- unset($signature_fields['signature']);
- uksort($signature_fields, function($a, $b) {
- $a_lower = strtolower($a);
- $b_lower = strtolower($b);
- if ($a_lower == 'token') return 1;
- if ($b_lower == 'token') return -1;
- if ($a_lower == $b_lower) return 0;
- return ($a_lower > $b_lower) ? 1 : -1;
- });
- $calculated_signature = md5(http_build_query($signature_fields, '', '&', PHP_QUERY_RFC3986));
- if ($calculated_signature !== $signature) {
- return $this->send_error_message('Неверная подпись - ожидается ' . $calculated_signature);
- }
- if ($post_data['token'] !== \Bingo\Config::get('config', 'token')) {
- return $this->send_error_message('Неверный токен');
- }
- if (empty($id)) {
- return $this->send_error_message(['id' => 'Поле является обязательным']);
- }
- $task = \App\Models\Task::findOneBy(['id' => $id, 'developer' => $this->developer]);
- if (!$task) {
- return $this->send_error_message(['id' => 'Задача #' . $id . ' не найдена']);
- }
- if (array_key_exists('text', $post_data) && !empty($post_data['text'])) {
- $task->text = $post_data['text'];
- }
- if (array_key_exists('status', $post_data)) {
- $task->status = !empty($post_data['status']) ? \App\Models\Task::STATUS_DONE : \App\Models\Task::STATUS_EMPTY;
- }
- $task->save();
- return $this->send_success_message();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement