Przypuśćmy, że mamy wyłącznie dostęp do lini komend MySQL (lub pola zapytania SQL na hostingu) naszego sklepu, a musimy dodać użytkownika o randze administrator.
Z różnych powodów nie mamy także dostępu do PhpMyAdmin i nie możemy „wyklikać” zmiany hasła admina. Tak jak na poniższym tutorialu z naszego bloga:
Poniżej poradnik jak uzyskać dostęp do admina wyłącznie poprzez zapytania MySQL 🙂
Zawartość artykułu
Tabela tymczasowa
Najpierw tworzymy tabelę tymczasową z pracownikami (użytkownikami, którzy mogą logować się do konta):
CREATE TABLE ps_employee_tmp AS SELECT * FROM ps_employee;
Tworzenie nowego użytkownika.
Znajdujemy użytkownika, który jest adminem:
SELECT `id_employee` FROM `ps_employee_tmp` WHERE `id_profile` =1 ORDER BY `id_employee` LIMIT 0 , 1
Notujemy ten ID – będzie to np. ID = 1.
Modyfikujemy następnie jego ID i adres e-mail. Najpierw przyznajemy nowy numer ID. Musi być większy o 1 niż maksymalnie użyty:
SELECT max(`id_employee`) FROM ps_employee_tmp;
Czyli np. jak będzie to 7 – użyjemy 8. Ponadto przyznajemy e-mail naszego użytkownika.
Najlepiej zastosuj prawdziwy adres (a nie np. example@example.com). Ułatwi nam to np. reset hasła w przyszłości. Reset będzie też konieczny, jak np. nie masz dostępu do pliku z hash-solą (patrz niżej).
Modyfikujemy tabelę:
UPDATE `ps_employee_tmp` SET `id_employee`= 8, `email` = 'info@pskrk.com' WHERE `id_employee` = 1;
Hasło nowego użytkownika.
Ustanawiamy hasło użytkownika. Będzie ono oparte o tzw. cookie_key użyty w PrestaShop.
Jeśli nie mamy dostępu do pliku konfiguracyjnego z cookie_key możemy po prostu zresetować hasło przez maila i pominąć ten podpunkt.
Znajdziemy go w zależności od wersji PS w tym pliku:
PS 1.5 – 1.6:
config/settings.inc.php
PS 1.7
app/config/parameters.php
cookie_key jest tzw. hash-sól czyli losowy string znaków dla każdej instalacji PrestaShop inny (generowany automatycznie przy instalacji). Kopiujemy go z w/w pliku PHP bez apostrofów, które go otacza.
Przypuśćmy, że nasza sól ma postać:
dYyc0eCZUnGypUgBNOQX1tnDpKt73dEub5aPQSEjpFvgfbkZWS6VjnIO
A nowe hasło, które chcemy użyć to np.:
mojehaslo-Bi99!
UWAGA! Koniecznie zmień Twoje hasło podczas zapytań na inne. Powyższe hasło jest losowo wygenerowane i najlepiej dla celów bezpieczeństwa ustaw własne!
Wtedy łączony string, który musimy użyć będzie miał postać (Po prostu doklejamy do hash-soli nasze hasło):
dYyc0eCZUnGypUgBNOQX1tnDpKt73dEub5aPQSEjpFvgfbkZWS6VjnIOmojehaslo-Bi99!
Zapytanie, które ustali hasło dla użytkownika o ID = 8 będzie tak wyglądać:
UPDATE `ps_employee_tmp` SET `passwd` = MD5('dYyc0eCZUnGypUgBNOQX1tnDpKt73dEub5aPQSEjpFvgfbkZWS6VjnIOmojehaslo-Bi99!') WHERE `id_employee` = 8
Dodanie nowego użytkownika do sklepu.
Wstawiamy użytkownika, którego ID znaleźlśmy:
INSERT INTO ps_employee SELECT * FROM ps_employee_tmp WHERE `id_employee` = 8;
Gotowe !
Będziesz mógł/a się teraz zalogować do panelu PrestaShop używając tych dostępów:
info@pskrk.com mojehaslo-Bi99!
Sprzątanie.
Najlepiej jeszcze usuń tabelę tymczasową. Nie będzie juz ona potrzebna:
DROP table ps_employee_tmp;