11component extends = " app.Models.Model" {
2- function config () {
3- table (" remember_tokens" );
42
5- // ID Property
6- property (
7- name = " id" ,
8- column = " id" ,
9- dataType = " integer" ,
10- automaticValidations = false
11- );
3+ function config () {
4+ table (" remember_tokens" );
125
13- // Token Property
14- property (
15- name = " token" ,
16- column = " token" ,
17- dataType = " string" ,
18- label = " Token" ,
19- limit = 255
20- );
6+ // ID Property
7+ property (name = " id" , column = " id" , dataType = " integer" , automaticValidations = false );
218
22- // User Agent
23- property (
24- name = " userAgent" ,
25- column = " user_agent" ,
26- dataType = " string" ,
27- label = " User Agent" ,
28- limit = 255
29- );
9+ // Token Property
10+ property (name = " token" , column = " token" , dataType = " string" , label = " Token" , limit = 255 );
3011
31- // User ID Property
32- property (
33- name = " userId" ,
34- column = " user_id" ,
35- dataType = " integer" ,
36- label = " User ID"
37- );
12+ // User Agent
13+ property (name = " userAgent" , column = " user_agent" , dataType = " string" , label = " User Agent" , limit = 255 );
3814
39- // Expires At Property
40- property (
41- name = " expiresAt" ,
42- column = " expires_at" ,
43- dataType = " datetime" ,
44- label = " Expires At"
45- );
15+ // User ID Property
16+ property (name = " userId" , column = " user_id" , dataType = " integer" , label = " User ID" );
4617
47- // Timestamps
48- property (
49- name = " createdAt" ,
50- column = " createdat" ,
51- dataType = " timestamp" ,
52- label = " Created At"
53- );
18+ // Expires At Property
19+ property (name = " expiresAt" , column = " expires_at" , dataType = " datetime" , label = " Expires At" );
5420
55- property (
56- name = " updatedAt" ,
57- column = " updatedat" ,
58- dataType = " timestamp" ,
59- label = " Updated At"
60- );
21+ // Timestamps
22+ property (name = " createdAt" , column = " createdat" , dataType = " timestamp" , label = " Created At" );
6123
62- // Relationships
63- belongsTo (name = " User" , foreignKey = " userId" );
64- }
24+ property (name = " updatedAt" , column = " updatedat" , dataType = " timestamp" , label = " Updated At" );
6525
66- // Create a new remember token
67- public function createToken (required numeric userId ) {
68- var token = new ();
69- token .userId = arguments .userId ;
70- token .token = hash (createUUID () & arguments .userId & now (), " SHA-256" );
71- token .expiresAt = dateAdd (" d" , 30 , now ());
72- return token .save ();
73- }
26+ // Relationships
27+ belongsTo (name = " User" , foreignKey = " userId" );
28+ }
7429
75- // Find token by hashed value (caller must hash raw cookie value with SHA-256 first)
76- public function findByToken (required string hashedToken ) {
77- return findOne (
78- where = " token = '#arguments .hashedToken #' AND expiresAt > '#dateTimeFormat (now (), " yyyy-MM-dd HH:nn:ss" ) #'"
79- );
80- }
30+ // Create a new remember token
31+ public function createToken (required numeric userId ) {
32+ var token = new ();
33+ token .userId = arguments .userId ;
34+ token .token = Hash (CreateUUID () & arguments .userId & Now (), " SHA-256" );
35+ token .expiresAt = DateAdd (" d" , 30 , Now ());
36+ return token .save ();
37+ }
8138
82- // Delete expired tokens
83- public function deleteExpiredTokens () {
84- return deleteAll (where = " expiresAt <= '#dateTimeFormat (now (), " yyyy-MM-dd HH:nn:ss" ) #'" );
85- }
86- }
39+ // Find token by hashed value (caller must hash raw cookie value with SHA-256 first)
40+ public function findByToken (required string hashedToken ) {
41+ return findOne (
42+ where = " token = '#arguments .hashedToken #' AND expiresAt > '#DateTimeFormat (Now (), " yyyy-MM-dd HH:nn:ss" ) #'"
43+ );
44+ }
45+
46+ // Delete expired tokens
47+ public function deleteExpiredTokens () {
48+ return deleteAll (where = " expiresAt <= '#DateTimeFormat (Now (), " yyyy-MM-dd HH:nn:ss" ) #'" );
49+ }
50+
51+ }
0 commit comments