3
3
namespace CodeIgniter \Shield \Models ;
4
4
5
5
use CodeIgniter \Model ;
6
+ use CodeIgniter \Shield \Exceptions \RuntimeException ;
6
7
use DateTime ;
7
8
use stdClass ;
8
9
@@ -24,25 +25,36 @@ class RememberModel extends Model
24
25
* Stores a remember-me token for the user.
25
26
*
26
27
* @param int|string $userId
27
- *
28
- * @return mixed
29
28
*/
30
- public function rememberUser ($ userId , string $ selector , string $ hashedValidator , string $ expires )
29
+ public function rememberUser ($ userId , string $ selector , string $ hashedValidator , string $ expires ): void
31
30
{
32
31
$ expires = new DateTime ($ expires );
33
32
34
- return $ this ->insert ([
33
+ $ return = $ this ->insert ([
35
34
'user_id ' => $ userId ,
36
35
'selector ' => $ selector ,
37
36
'hashedValidator ' => $ hashedValidator ,
38
37
'expires ' => $ expires ->format ('Y-m-d H:i:s ' ),
39
38
]);
39
+
40
+ $ this ->checkQueryReturn ($ return );
41
+ }
42
+
43
+ private function checkQueryReturn (bool $ return ): void
44
+ {
45
+ if ($ return === false ) {
46
+ $ error = $ this ->db ->error ();
47
+ $ message = 'Query error: ' . $ error ['code ' ] . ', '
48
+ . $ error ['message ' ] . ', query: ' . $ this ->db ->getLastQuery ();
49
+
50
+ throw new RuntimeException ($ message , $ error ['code ' ]);
51
+ }
40
52
}
41
53
42
54
/**
43
55
* Returns the remember-me token info for a given selector.
44
56
*
45
- * @return mixed
57
+ * @return stdClass|null
46
58
*/
47
59
public function getRememberToken (string $ selector )
48
60
{
@@ -53,29 +65,25 @@ public function getRememberToken(string $selector)
53
65
54
66
/**
55
67
* Updates the validator for a given selector.
56
- *
57
- * @return mixed
58
68
*/
59
- public function updateRememberValidator (stdClass $ token )
69
+ public function updateRememberValidator (stdClass $ token ): void
60
70
{
61
- return $ this ->save ($ token );
71
+ $ return = $ this ->save ($ token );
72
+
73
+ $ this ->checkQueryReturn ($ return );
62
74
}
63
75
64
76
/**
65
77
* Removes all persistent login tokens (remember-me) for a single user
66
78
* across all devices they may have logged in with.
67
79
*
68
- * @param int|string|null $userId
69
- *
70
- * @return mixed
80
+ * @param int|string $userId
71
81
*/
72
- public function purgeRememberTokens ($ userId = null )
82
+ public function purgeRememberTokens ($ userId): void
73
83
{
74
- if (empty ($ userId )) {
75
- return ;
76
- }
84
+ $ return = $ this ->where (['user_id ' => $ userId ])->delete ();
77
85
78
- return $ this ->where ([ ' user_id ' => $ userId ])-> delete ( );
86
+ $ this ->checkQueryReturn ( $ return );
79
87
}
80
88
81
89
/**
@@ -84,7 +92,9 @@ public function purgeRememberTokens($userId = null)
84
92
*/
85
93
public function purgeOldRememberTokens (): void
86
94
{
87
- $ this ->where ('expires <= ' , date ('Y-m-d H:i:s ' ))
95
+ $ return = $ this ->where ('expires <= ' , date ('Y-m-d H:i:s ' ))
88
96
->delete ();
97
+
98
+ $ this ->checkQueryReturn ($ return );
89
99
}
90
100
}
0 commit comments