@@ -268,6 +268,9 @@ public function getNewEmailConfirmationToken(): ?string
268268 public function setNewEmailConfirmationToken (?string $ newEmailConfirmationToken ): self
269269 {
270270 $ this ->newEmailConfirmationToken = $ newEmailConfirmationToken ;
271+ if ($ newEmailConfirmationToken ) {
272+ $ this ->newEmailAddressChangeRequestedAt = new \DateTime ();
273+ }
271274
272275 return $ this ;
273276 }
@@ -297,6 +300,9 @@ public function getEmailAddressVerifyToken(): ?string
297300 public function setEmailAddressVerifyToken (?string $ emailAddressVerifyToken ): void
298301 {
299302 $ this ->emailAddressVerifyToken = $ emailAddressVerifyToken ;
303+ if ($ emailAddressVerifyToken ) {
304+ $ this ->emailLastUpdatedAt = new \DateTime ();
305+ }
300306 }
301307
302308 public function isPasswordRequestLimitReached ($ ttl ): bool
@@ -307,6 +313,22 @@ public function isPasswordRequestLimitReached($ttl): bool
307313 && $ lastRequest ->getTimestamp () + $ ttl > time ();
308314 }
309315
316+ public function isNewEmailVerifyRequestLimitReached ($ ttl ): bool
317+ {
318+ $ lastRequest = $ this ->getNewEmailAddressChangeRequestedAt ();
319+
320+ return $ lastRequest instanceof \DateTime
321+ && $ lastRequest ->getTimestamp () + $ ttl > time ();
322+ }
323+
324+ public function isEmailVerifyRequestLimitReached ($ ttl ): bool
325+ {
326+ $ lastRequest = $ this ->emailLastUpdatedAt ;
327+
328+ return $ lastRequest instanceof \DateTime
329+ && $ lastRequest ->getTimestamp () + $ ttl > time ();
330+ }
331+
310332 /** @see \Serializable::serialize() */
311333 public function serialize (): string
312334 {
0 commit comments