diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..e4b24d0 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,237 @@ +root = true + +[*] +ij_continuation_indent_size = 8 +ij_formatter_off_tag = @formatter:off +ij_formatter_on_tag = @formatter:on +ij_formatter_tags_enabled = false +ij_smart_tabs = false +ij_visual_guides = none +ij_wrap_on_typing = false + +[{*.ctp,*.hphp,*.inc,*.module,*.php,*.php4,*.php5,*.phtml}] +ij_continuation_indent_size = 4 +ij_php_align_assignments = false +ij_php_align_class_constants = false +ij_php_align_enum_cases = false +ij_php_align_group_field_declarations = false +ij_php_align_inline_comments = false +ij_php_align_key_value_pairs = false +ij_php_align_match_arm_bodies = false +ij_php_align_multiline_array_initializer_expression = false +ij_php_align_multiline_binary_operation = false +ij_php_align_multiline_chained_methods = false +ij_php_align_multiline_extends_list = false +ij_php_align_multiline_for = true +ij_php_align_multiline_parameters = true +ij_php_align_multiline_parameters_in_calls = false +ij_php_align_multiline_ternary_operation = false +ij_php_align_named_arguments = false +ij_php_align_phpdoc_comments = false +ij_php_align_phpdoc_param_names = false +ij_php_anonymous_brace_style = end_of_line +ij_php_api_weight = 28 +ij_php_array_initializer_new_line_after_left_brace = false +ij_php_array_initializer_right_brace_on_new_line = false +ij_php_array_initializer_wrap = off +ij_php_assignment_wrap = off +ij_php_attributes_wrap = off +ij_php_author_weight = 28 +ij_php_binary_operation_sign_on_next_line = false +ij_php_binary_operation_wrap = off +ij_php_blank_lines_after_class_header = 0 +ij_php_blank_lines_after_function = 1 +ij_php_blank_lines_after_imports = 1 +ij_php_blank_lines_after_opening_tag = 0 +ij_php_blank_lines_after_package = 0 +ij_php_blank_lines_around_class = 1 +ij_php_blank_lines_around_constants = 0 +ij_php_blank_lines_around_enum_cases = 0 +ij_php_blank_lines_around_field = 0 +ij_php_blank_lines_around_method = 1 +ij_php_blank_lines_before_class_end = 0 +ij_php_blank_lines_before_imports = 1 +ij_php_blank_lines_before_method_body = 0 +ij_php_blank_lines_before_package = 1 +ij_php_blank_lines_before_return_statement = 0 +ij_php_blank_lines_between_imports = 0 +ij_php_block_brace_style = end_of_line +ij_php_call_parameters_new_line_after_left_paren = false +ij_php_call_parameters_right_paren_on_new_line = false +ij_php_call_parameters_wrap = off +ij_php_catch_on_new_line = false +ij_php_category_weight = 28 +ij_php_class_brace_style = end_of_line +ij_php_comma_after_last_argument = false +ij_php_comma_after_last_array_element = false +ij_php_comma_after_last_closure_use_var = false +ij_php_comma_after_last_match_arm = false +ij_php_comma_after_last_parameter = false +ij_php_concat_spaces = true +ij_php_copyright_weight = 28 +ij_php_deprecated_weight = 28 +ij_php_do_while_brace_force = never +ij_php_else_if_style = as_is +ij_php_else_on_new_line = false +ij_php_example_weight = 28 +ij_php_extends_keyword_wrap = off +ij_php_extends_list_wrap = off +ij_php_fields_default_visibility = private +ij_php_filesource_weight = 28 +ij_php_finally_on_new_line = false +ij_php_for_brace_force = never +ij_php_for_statement_new_line_after_left_paren = false +ij_php_for_statement_right_paren_on_new_line = false +ij_php_for_statement_wrap = off +ij_php_force_empty_methods_in_one_line = false +ij_php_force_short_declaration_array_style = false +ij_php_getters_setters_naming_style = camel_case +ij_php_getters_setters_order_style = getters_first +ij_php_global_weight = 28 +ij_php_group_use_wrap = on_every_item +ij_php_if_brace_force = never +ij_php_if_lparen_on_next_line = false +ij_php_if_rparen_on_next_line = false +ij_php_ignore_weight = 28 +ij_php_import_sorting = alphabetic +ij_php_indent_break_from_case = true +ij_php_indent_case_from_switch = true +ij_php_indent_code_in_php_tags = false +ij_php_internal_weight = 28 +ij_php_keep_blank_lines_after_lbrace = 2 +ij_php_keep_blank_lines_before_right_brace = 2 +ij_php_keep_blank_lines_in_code = 2 +ij_php_keep_blank_lines_in_declarations = 2 +ij_php_keep_control_statement_in_one_line = true +ij_php_keep_first_column_comment = true +ij_php_keep_indents_on_empty_lines = false +ij_php_keep_line_breaks = true +ij_php_keep_rparen_and_lbrace_on_one_line = false +ij_php_keep_simple_classes_in_one_line = false +ij_php_keep_simple_methods_in_one_line = false +ij_php_lambda_brace_style = end_of_line +ij_php_license_weight = 28 +ij_php_line_comment_add_space = false +ij_php_line_comment_at_first_column = true +ij_php_link_weight = 28 +ij_php_lower_case_boolean_const = false +ij_php_lower_case_keywords = true +ij_php_lower_case_null_const = false +ij_php_method_brace_style = end_of_line +ij_php_method_call_chain_wrap = off +ij_php_method_parameters_new_line_after_left_paren = false +ij_php_method_parameters_right_paren_on_new_line = false +ij_php_method_parameters_wrap = off +ij_php_method_weight = 28 +ij_php_modifier_list_wrap = false +ij_php_multiline_chained_calls_semicolon_on_new_line = false +ij_php_namespace_brace_style = 1 +ij_php_new_line_after_php_opening_tag = false +ij_php_null_type_position = in_the_end +ij_php_package_weight = 28 +ij_php_param_weight = 0 +ij_php_parameters_attributes_wrap = off +ij_php_parentheses_expression_new_line_after_left_paren = false +ij_php_parentheses_expression_right_paren_on_new_line = false +ij_php_phpdoc_blank_line_before_tags = false +ij_php_phpdoc_blank_lines_around_parameters = false +ij_php_phpdoc_keep_blank_lines = true +ij_php_phpdoc_param_spaces_between_name_and_description = 1 +ij_php_phpdoc_param_spaces_between_tag_and_type = 1 +ij_php_phpdoc_param_spaces_between_type_and_name = 1 +ij_php_phpdoc_use_fqcn = false +ij_php_phpdoc_wrap_long_lines = false +ij_php_place_assignment_sign_on_next_line = false +ij_php_place_parens_for_constructor = 0 +ij_php_property_read_weight = 28 +ij_php_property_weight = 28 +ij_php_property_write_weight = 28 +ij_php_return_type_on_new_line = false +ij_php_return_weight = 1 +ij_php_see_weight = 28 +ij_php_since_weight = 28 +ij_php_sort_phpdoc_elements = true +ij_php_space_after_colon = true +ij_php_space_after_colon_in_enum_backed_type = true +ij_php_space_after_colon_in_named_argument = true +ij_php_space_after_colon_in_return_type = true +ij_php_space_after_comma = true +ij_php_space_after_for_semicolon = true +ij_php_space_after_quest = true +ij_php_space_after_type_cast = false +ij_php_space_after_unary_not = false +ij_php_space_before_array_initializer_left_brace = false +ij_php_space_before_catch_keyword = true +ij_php_space_before_catch_left_brace = true +ij_php_space_before_catch_parentheses = true +ij_php_space_before_class_left_brace = true +ij_php_space_before_closure_left_parenthesis = true +ij_php_space_before_colon = true +ij_php_space_before_colon_in_enum_backed_type = false +ij_php_space_before_colon_in_named_argument = false +ij_php_space_before_colon_in_return_type = false +ij_php_space_before_comma = false +ij_php_space_before_do_left_brace = true +ij_php_space_before_else_keyword = true +ij_php_space_before_else_left_brace = true +ij_php_space_before_finally_keyword = true +ij_php_space_before_finally_left_brace = true +ij_php_space_before_for_left_brace = true +ij_php_space_before_for_parentheses = true +ij_php_space_before_for_semicolon = false +ij_php_space_before_if_left_brace = true +ij_php_space_before_if_parentheses = true +ij_php_space_before_method_call_parentheses = false +ij_php_space_before_method_left_brace = true +ij_php_space_before_method_parentheses = false +ij_php_space_before_quest = true +ij_php_space_before_short_closure_left_parenthesis = false +ij_php_space_before_switch_left_brace = true +ij_php_space_before_switch_parentheses = true +ij_php_space_before_try_left_brace = true +ij_php_space_before_unary_not = false +ij_php_space_before_while_keyword = true +ij_php_space_before_while_left_brace = true +ij_php_space_before_while_parentheses = true +ij_php_space_between_ternary_quest_and_colon = false +ij_php_spaces_around_additive_operators = true +ij_php_spaces_around_arrow = false +ij_php_spaces_around_assignment_in_declare = false +ij_php_spaces_around_assignment_operators = true +ij_php_spaces_around_bitwise_operators = true +ij_php_spaces_around_equality_operators = true +ij_php_spaces_around_logical_operators = true +ij_php_spaces_around_multiplicative_operators = true +ij_php_spaces_around_null_coalesce_operator = true +ij_php_spaces_around_pipe_in_union_type = false +ij_php_spaces_around_relational_operators = true +ij_php_spaces_around_shift_operators = true +ij_php_spaces_around_unary_operator = false +ij_php_spaces_around_var_within_brackets = false +ij_php_spaces_within_array_initializer_braces = false +ij_php_spaces_within_brackets = false +ij_php_spaces_within_catch_parentheses = false +ij_php_spaces_within_for_parentheses = false +ij_php_spaces_within_if_parentheses = false +ij_php_spaces_within_method_call_parentheses = false +ij_php_spaces_within_method_parentheses = false +ij_php_spaces_within_parentheses = false +ij_php_spaces_within_short_echo_tags = true +ij_php_spaces_within_switch_parentheses = false +ij_php_spaces_within_while_parentheses = false +ij_php_special_else_if_treatment = false +ij_php_subpackage_weight = 28 +ij_php_ternary_operation_signs_on_next_line = false +ij_php_ternary_operation_wrap = off +ij_php_throws_weight = 2 +ij_php_todo_weight = 28 +ij_php_treat_multiline_arrays_and_lambdas_multiline = false +ij_php_unknown_tag_weight = 28 +ij_php_upper_case_boolean_const = false +ij_php_upper_case_null_const = false +ij_php_uses_weight = 28 +ij_php_var_weight = 28 +ij_php_variable_naming_style = mixed +ij_php_version_weight = 28 +ij_php_while_brace_force = never +ij_php_while_on_new_line = false diff --git a/BancaDati.sql b/BancaDati.sql new file mode 100644 index 0000000..fc74c0f --- /dev/null +++ b/BancaDati.sql @@ -0,0 +1,66 @@ +SET +SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET +time_zone = "+00:00"; + + +CREATE TABLE `ingredienti` +( /*Zutaten*/ + `id` int auto_increment NOT NULL PRIMARY KEY, + `cognome` varchar(200) NOT NULL, /*Name*/ + `caloriePerCento` integer(5) NOT NULL, /*Kalorien pro Gramm*/ + `ilPeso` integer(5) NULL, /*Gewicht*/ + `prezzo` decimal(4, 2) NOT NULL, /*Preis*/ + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `folla` +( /*Menge*/ + `id` int auto_increment NOT NULL PRIMARY KEY, + `unita` varchar(200) NOT NULL, /*Einheit*/ + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `elenco` +( /*Liste*/ + `id` int auto_increment NOT NULL PRIMARY KEY, + `creatore` varchar(200) NOT NULL, /*Ersteller*/ + `coloreDiSfondo` integer(10) NOT NULL, /*Hintergrundfarbe*/ + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `utente` +( /*Benutzer*/ + `id` int auto_increment NOT NULL PRIMARY KEY, + `email` varchar(200) NOT NULL, /*Email*/ + `parolaDordine` varchar(255) NOT NULL, /*Passwort*/ + `nomeUtente` varchar(50) UNIQUE NOT NULL, /*Benutzernamen*/ + `gettone` varchar(255), /*Token für Session*/ + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `elencoIngredienti` +( /*Liste_Zutaten*/ + `id` int auto_increment NOT NULL PRIMARY KEY, + `ingredientiID` int NOT NULL, /*ZutatenID*/ + `elencoID` int NOT NULL, /*ListeID*/ + `follaID` int NOT NULL, /*MengeID*/ + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `utenteElenco` +( /*Benutzer_Liste*/ + `id` int auto_increment NOT NULL PRIMARY KEY, + `elencoID` int NOT NULL, /*ListeID*/ + `utenteID` int NOT NULL, /*BenutzerID*/ + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +ALTER TABLE `elencoIngredienti` /*Liste_Zutaten*/ + ADD CONSTRAINT `FK_ElencoIngredienti_Ingredienti` FOREIGN KEY (`ingredientiID`) REFERENCES `ingredienti`(`id`), /*Liste_Zutaten hat Foreignkey von Zutaten(id)*/ + ADD CONSTRAINT `FK_ElencoIngredienti_Elenco` FOREIGN KEY (`elencoID`) REFERENCES `elenco`(`id`), /*Liste_Zutaten hat Foreignkey von Liste(id)*/ + ADD CONSTRAINT `FK_ElencoIngredienti_Folla` FOREIGN KEY (`follaID`) REFERENCES `folla`(`id`); /*Liste_Zutaten hat Foreignkey von Menge(id)*/ + +ALTER TABLE `utenteElenco` /*Benutzer_Liste*/ + ADD CONSTRAINT `FK_UtenteElenco_Utente` FOREIGN KEY (`utenteId`) REFERENCES `utente`(`id`), /*Benutzer_Liste hat Foreignkey von Benutzer(id)*/ + ADD CONSTRAINT `FK_UtenteElenco_Elenco` FOREIGN KEY (`elencoId`) REFERENCES `elenco`(`id`); /*Benutzer_Liste hat Foreignkey von Liste(id)*/ diff --git a/BancaDati/BancaDati.php b/BancaDati/BancaDati.php new file mode 100644 index 0000000..9690979 --- /dev/null +++ b/BancaDati/BancaDati.php @@ -0,0 +1,135 @@ +linkDB(); + } + private function linkDB() { + try { + $this->pdo = new PDO("mysql:dbname=$this->dbName;host=$this->linkName" + , $this->user + , $this->pw + , array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); + } catch (PDOException $e) { + die; + } + } + public function createUUID() + { + $data = openssl_random_pseudo_bytes(16); + $data[6] = chr(ord($data[6]) & 0x0f | 0x40); + $data[8] = chr(ord($data[8]) & 0x3f | 0x80); + return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)); + } + + /** + * Einheitliche Insert Funktion + * @param string $table + * @param array $values + * @return void + * author Simon Bock + */ + public function insert(string $table, array $values){ + $value = ""; + $column = ""; + foreach ($values as $col => $v){ + $value .= "'" . $v . "',"; + $column .= $col . ","; + } + $value = trim($value, ","); + $column = trim($column, ","); + + $sql = "INSERT INTO $table($column) VALUES ($value);"; + try { + $sth = $this->pdo->prepare($sql); + $sth->execute(); + }catch (PDOException $e){ + die; + } + } + + /** + * Einheitliche Update Funktion + * @param string $table + * @param string $id + * @param array $values + * @return void + * @author Malte Schulze Hobeling + */ + public function update(string $table, string $id, array $values){ + $value = ""; + foreach ($values as $col => $v){ + $value .= $col . "='" . $v . "',"; + } + $value = trim($value, ","); + + $sql = "UPDATE " . $table . " SET " . $value . " WHERE `id` = " . $id . ";"; + try { + $sth = $this->pdo->prepare($sql); + $sth->execute(); + }catch (PDOException $e){ + die; + } + } + + /** + * Einheitliche Delete Funktion + * @param string $table + * @param string $id + * @return void + * @author Malte Schulze Hobeling + */ + public function delete(string $table, string $id){ + $sql = "DELETE FROM " . $table . " WHERE `id` = '" . $id . "';"; + try { + $sth = $this->pdo->prepare($sql); + $sth->execute(); + }catch (PDOException $e){ + die; + } + } + + /** + * einheitliche Select Funktion + * kann sortiert werden durch ["by"]=>"col" und ["order"]=>"ASC|DESC" + * @param string $table + * @param array $where ["column"]=>"value" es wird mit LIKE verglichen und mit AND verbunden + * @return void + * @author Malte Schulze Hobeling + */ + public function select(string $table, array $where){ + $whereString = ""; + $orderString = ""; + if(isset($where["by"])){ + $orderString = " ORDER BY " . $where["by"]; + unset($where["by"]); + if(isset($where["order"])){ + $orderString .= " " . $where["order"]; + unset($where["order"]); + } + } + foreach ($where as $col => $v) { + if($whereString != ""){ + $whereString .= " AND "; + } + $whereString .= "`" . $col . "` LIKE '" . $v . "'"; + } + $sql = "SELECT * FROM ".$table." WHERE ".$whereString.$orderString.";"; + try { + return $this->pdo->query($sql)->fetch(); + }catch (PDOException $e){ + die; + } + } +} \ No newline at end of file diff --git a/ERD/2022-11-30_Einkaufsliste.vpp b/ERD/2022-11-30_Einkaufsliste.vpp new file mode 100644 index 0000000..cd41e62 Binary files /dev/null and b/ERD/2022-11-30_Einkaufsliste.vpp differ diff --git a/ERD/Einkaufsliste.jpg b/ERD/Einkaufsliste.jpg new file mode 100644 index 0000000..ed8a223 Binary files /dev/null and b/ERD/Einkaufsliste.jpg differ diff --git a/README.md b/README.md index 164a5d9..daac34a 100644 --- a/README.md +++ b/README.md @@ -1 +1,6 @@ -# DirektiveDesDons \ No newline at end of file +# DirektiveDesDons + +Von: +* Simon Bock +* Johannes Kantz +* Malte Schulze Hobeling \ No newline at end of file diff --git a/Router/Response.php b/Router/Response.php index bfd335c..69065d7 100644 --- a/Router/Response.php +++ b/Router/Response.php @@ -8,6 +8,7 @@ class Response * @param string $data * @param int? $status * @return void + * @author Johannes Kantz */ public function send(string $data, int $status = null) { @@ -22,6 +23,7 @@ class Response * @param array $data * @param int? $status * @return void + * @author Johannes Kantz */ public function json(array $data, int $status = null) { @@ -36,6 +38,7 @@ class Response * Set the status code * @param int $status * @return void + * @author Johannes Kantz */ public function status(int $status) { diff --git a/Router/Route.php b/Router/Route.php index ca5a4f0..48dc6f3 100644 --- a/Router/Route.php +++ b/Router/Route.php @@ -5,6 +5,11 @@ class Route { private array $methods = []; + /** + * @param string|null $method + * @param $controller + * @author Johannes Kantz + */ public function __construct(string $method = null, $controller = null) { if ($method != null && $controller != null) { @@ -12,36 +17,66 @@ class Route } } + /** + * @param $controller + * @return $this + * @author Johannes Kantz + */ public function get($controller) { $this->methods["GET"] = $controller; return $this; } + /** + * @param $controller + * @return $this + * @author Johannes Kantz + */ public function post($controller) { $this->methods["POST"] = $controller; return $this; } + /** + * @param $controller + * @return $this + * @author Johannes Kantz + */ public function put($controller) { $this->methods["PUT"] = $controller; return $this; } + /** + * @param $controller + * @return $this + * @author Johannes Kantz + */ public function delete($controller) { $this->methods["DELETE"] = $controller; return $this; } + /** + * @param $controller + * @return $this + * @author Johannes Kantz + */ public function all($controller) { $this->methods["ALL"] = $controller; return $this; } + /** + * @param string $method + * @return mixed + * @author Johannes Kantz + */ public function getController(string $method) { return $this->methods[$method] ?? $this->methods["ALL"]; diff --git a/Router/Router.php b/Router/Router.php index 936dd4f..35d05fc 100644 --- a/Router/Router.php +++ b/Router/Router.php @@ -16,6 +16,7 @@ class Router /** * Router + * @author Johannes Kantz */ public function __construct(string $pathname) { @@ -29,7 +30,7 @@ class Router $this->request = $_SERVER; } if (isset($_POST)) { - $this->request["body"] = $_POST; + $this->request["body"] = json_decode(file_get_contents('php://input'), true); } if (isset($_POST)) { $this->request["params"] = $_GET; @@ -44,6 +45,7 @@ class Router * @param string $uri * @param $middleware * @return void + * @author Johannes Kantz */ public function use(string $uri, callable $middleware): void { @@ -54,6 +56,7 @@ class Router * get Middleware for uri * @param string $uri * @return array + * @author Johannes Kantz */ private function getMiddleware(): array { @@ -70,6 +73,7 @@ class Router * Calls the middleware * @param array $middleware * @return void + * @author Johannes Kantz */ private function callMiddleware(array $middleware): void { @@ -83,6 +87,7 @@ class Router * @param string $uri * @param $controller * @return void + * @author Johannes Kantz */ public function get(string $uri, callable $controller): void { @@ -94,6 +99,7 @@ class Router * @param string $uri * @param $controller * @return void + * @author Johannes Kantz */ public function post(string $uri, callable $controller): void { @@ -105,6 +111,7 @@ class Router * @param string $uri * @param $controller * @return void + * @author Johannes Kantz */ public function put(string $uri, callable $controller): void { @@ -116,6 +123,7 @@ class Router * @param string $uri * @param $controller * @return void + * @author Johannes Kantz */ public function delete(string $uri, callable $controller): void { @@ -127,6 +135,7 @@ class Router * @param string $uri * @param $controller * @return void + * @author Johannes Kantz */ public function all(string $uri, callable $controller): void { @@ -137,6 +146,7 @@ class Router * Route * @param string $uri * @return void + * @author Johannes Kantz */ public function route(string $uri): Route { @@ -149,6 +159,7 @@ class Router * @param string $uri * @param array $params * @return string + * @author Johannes Kantz */ private function routeMatches(string $route, string $uri): bool { @@ -175,6 +186,7 @@ class Router * @param string $uri * @param array $params * @return array + * @author Johannes Kantz */ private function getParams(string $route, string $uri): array { @@ -193,6 +205,7 @@ class Router /** * gets the controller for the given uri * @param array $routes + * @author Johannes Kantz */ private function getController(): callable|bool { @@ -211,6 +224,7 @@ class Router /** * Starts the router * @return void + * @author Johannes Kantz */ public function start(): void { diff --git a/User.php b/User.php new file mode 100644 index 0000000..203368b --- /dev/null +++ b/User.php @@ -0,0 +1,53 @@ +db = new BancaDati(); + return $this; + } + + public function exists() { + return true; + } + public function loginWithUsername(string $username, string $password) : string { + $userObject = $this->db->select("utente", ["nomeUtente" => $username]); + + if(!$userObject){ + return false; + } + $this->id = $userObject["id"]; + $this->username = $userObject["nomeUtente"]; + $this->email = $userObject["email"]; + $this->password = $userObject["parolaDordine"]; + $this->token = $this->db->createUUID(); + + if($this->password != $password){ + return false; // ungültiges password + } + + $this->db->update("utente", $this->id, ["gettone" => $this->token]); + + return $this->token; + } + public function loginWithToken(string $token){ + $userObject = $this->db->select("utente", ["gettone" => $token]); + if(!$userObject){ + return false; + } + $this->id = $userObject["id"]; + $this->username = $userObject["nomeUtente"]; + $this->email = $userObject["email"]; + $this->password = $userObject["parolaDordine"]; + $this->token = $token; + + return $this; + } +} \ No newline at end of file diff --git a/index.php b/index.php index ea5d48d..b172924 100644 --- a/index.php +++ b/index.php @@ -2,19 +2,77 @@ require_once("Router/Router.php"); require_once("Router/Response.php"); +require_once("BancaDati/BancaDati.php"); +require_once("User.php"); use Router\Response; use Router\Router; +use BancaDati\BancaDati; $app = new Router("/DirektiveDesDons"); +$db = new BancaDati(); +$app->use("/", function (array &$req, Response $res) { + if(isset($_COOKIE["TOKEN"])){ + $user = new User(); + if($user->loginWithToken($_COOKIE["TOKEN"])){ + $req["user"] = $user; + } + } +}); $app->get("/", function (array $req, Response $res) { $res->send("Hello World"); + //var_dump($req["user"]); }); $app->get("/user", function (array $req, Response $res) { $res->send("user"); }); +$app->get("/user/:id", function (array $req, Response $res) use ($db) { + $db->select("utente", ["username" => $req["id"]]); + $res->send("user " . $req["params"]["id"]); +}); +$app->post("/createuser", function (array $req, Response $res) use ($db) { + $newUsername = $req["body"]["username"]; + $newPassword = $req["body"]["password"]; + $newEmail = $req["body"]["email"]; + // $db->insert("utente", ["email" => "test@email.com", "parolaDordine" => "password", "nomeUtente" => "testuser"]); + $db->insert("utente", ["email" => "$newEmail", "parolaDordine" => "$newPassword", "nomeUtente" => "$newUsername"]); + + $res->send("user "); +}); + +$app->post("/login", function( array $req, Response $res) use ($db) { + $username = $req["body"]["username"]; + $password = $req["body"]["password"]; + + $user = new User(); + $usertoken = $user->loginWithUsername($username, $password); + + if($usertoken){ + setcookie("TOKEN", $usertoken, time()+3600); // 1h + $res->send("Login successful" . "token: " . $usertoken, 200); + }else{ + $res->send("Login failed", 403); + } +}); + +$app->post("/createingredients", function (array $req, Response $res) use ($db) { + $newIngredient = $req["body"]["ingredient"]; + $newCalorie = $req["body"]["calories"]; + $newWeight = $req["body"]["weight"]; + $newPrice = $req["body"]["price"]; + $db->insert("ingredienti", ["cognome" => "$newIngredient", "caloriePerCento" => "$newCalorie", "ilPeso" => "$newWeight", "prezzo" => "$newPrice"]); + + $res->send("New ingredient has been listed "); +}); + +$app->post("/createunits", function (array $req, Response $res) use ($db) { + $newUnit = $req["body"]["unit"]; + $db->insert("folla", ["unita" => "$newUnit"]); + + $res->send("New unit has been listed "); +}); $app->start(); \ No newline at end of file diff --git a/italienIntoGerman.txt b/italienIntoGerman.txt new file mode 100644 index 0000000..9d203a2 --- /dev/null +++ b/italienIntoGerman.txt @@ -0,0 +1,27 @@ +ingredienti = Zutaten + cognome = Name + caloriePerCento = Kalorien pro Gramm + ilPeso = Gewicht + prezzo = Preis + +folla = Menge + unita = Einheit + +elenco = Liste + creatore = Ersteller + coloreDiSfondo = Hintergrundfarbe + +utente = Benutzer + email = Email + parolaDordine = Passwort + nomeUtente = Benutzernamen + gettone = Token (für die Session) + +elencoIngredienti = Liste_Zutaten + ingredientiID = ZutatenID + elencoID = ListeID + follaID = MengeID + +utenteElenco = Benutzer_Liste + elencoID = ListeID + utenteID = BenutzerID \ No newline at end of file