summaryrefslogtreecommitdiff
path: root/core/classes/authentication/info.md
diff options
context:
space:
mode:
authorGeorge Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-03-14 00:28:47 +0200
committerGeorge Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-03-14 00:28:47 +0200
commit8b928471412bbf9016df9b01b2308f003e455d7d (patch)
tree913a7bab845b8bfd72ba489746ea703159314f4b /core/classes/authentication/info.md
parente70176b6e6f539754974117625eeab06c4c5dd01 (diff)
parentd9167fb5318d5370ba5445e94c0e0f9b64341df4 (diff)
downloadclassroom-8b928471412bbf9016df9b01b2308f003e455d7d.tar.gz
classroom-8b928471412bbf9016df9b01b2308f003e455d7d.tar.bz2
classroom-8b928471412bbf9016df9b01b2308f003e455d7d.zip
Merge branch 'authentication'
Diffstat (limited to 'core/classes/authentication/info.md')
-rw-r--r--core/classes/authentication/info.md114
1 files changed, 114 insertions, 0 deletions
diff --git a/core/classes/authentication/info.md b/core/classes/authentication/info.md
new file mode 100644
index 0000000..e6d1372
--- /dev/null
+++ b/core/classes/authentication/info.md
@@ -0,0 +1,114 @@
+# Authentication System
+
+read/ref: https://dev.to/fadymr/php-create-your-own-php-authentication-4e20
+
+also for session: https://dev.to/fadymr/php-create-a-simple-session-wrapper-class-dpk
+
+
+
+## How to use ?
+
+
+### Registration
+
+
+ // use DevCoder\Authentication\Core\UserManager;
+ // use DevCoder\Authentication\User;
+
+ // register
+ $userManager = new UserManager();
+ $req = Registry::get('REQUEST);
+
+ $password = $userManager->cryptPassword($req->POST['password']);
+
+ $user = (new User())
+ ->setUserName($req->POST['username'])
+ ->setPassword($password)
+ ->setRoles(['ROLE_USER']);
+
+ $userManager->createUserToken($user);
+
+ // check Token in Session
+ var_dump($userManager->getUserToken());
+ // object(DevCoder\Authentication\Token\UserToken)[4]
+ // private 'user' =>
+ // object(DevCoder\Authentication\User)[5]
+ // private 'userName' => string 'username' (length=8)
+ // private 'password' => string '$2y$10$iWdcmebmikUFlgKMqW7/rOmUp1DjFAuWKqdUHBhL08FZ7LL6bwRey' (length=60)
+ // private 'roles' =>
+ // array (size=1)
+ // 0 => string 'ROLE_USER' (length=9)
+ // private 'enabled' => boolean true
+
+
+## Connected or not
+
+ <?php
+
+ // use DevCoder\Authentication\Core\UserManager;
+ // use DevCoder\Authentication\User;
+
+ $userManager = new UserManager();
+ if ($userManager->hasUserToken()) {
+ // connected
+
+ $token = $userManager->getUserToken();
+ $user = $token->getUser();
+ var_dump($user);
+ // object(DevCoder\Authentication\User)[5]
+ // private 'userName' => string 'username' (length=8)
+ // private 'password' => string '$2y$10$OBobeLhdvdiftuedlv1a6e4.qF6sCG/usq5WEV4E3uB.UiS1egv/m' (length=60)
+ // private 'roles' =>
+ // array (size=1)
+ // 0 => string 'ROLE_USER' (length=9)
+ // private 'enabled' => boolean true
+
+ } else {
+ // not connected
+ }
+
+
+## Access management
+
+ $userManager = new UserManager();
+ if ($userManager->isGranted(['ROLE_ADMIN'])) {
+ //is admin
+ // return Response 200
+ }else {
+ //is not admin
+ // return Response 403
+ }
+
+ Logout
+
+ $userManager = new UserManager();
+ $userManager->logout();
+
+
+## Login
+
+ <?php
+
+ use DevCoder\Authentication\Core\UserManager;
+
+ $stmt = $pdo->prepare("SELECT * FROM users WHERE username=?");
+ $stmt->execute([$_POST['username']]);
+ $userFromDataBase = $stmt->fetch();
+ /**
+ * Hydration
+ */
+ $user = (new \Test\DevCoder\Authentication\User())
+ ->setUserName($userFromDataBase['username'])
+ ->setPassword($userFromDataBase['password'])
+ ->setRoles(json_decode($userFromDataBase['roles']))
+ ->setEnabled($userFromDataBase['active']);
+
+ $userManager = new UserManager();
+ if ($userManager->isPasswordValid($user, $_POST['password'])) {
+
+ // login OK, set Token in session
+ $userManager->createUserToken($user);
+
+ } else {
+ // login failed , return error
+ }