*/ class ActionCode { /** * Generate an Action Code. * @param string $action * @param int $user * @return string */ public static function generate(string $action, int $user = 0): string { // Generate a code $code = bin2hex(random_bytes(8)); // Insert it DB::table('actioncodes') ->insert([ 'code_action' => $action, 'user_id' => $user, 'action_code' => $code, ]); // Return the code return $code; } /** * Validate an action code. * @param string $action * @param string $code * @param int $user * @param bool $invalidate * @return bool */ public static function validate(string $action, string $code, int $user = 0, bool $invalidate = true): bool { // Fetch the code from the db $get = DB::table('actioncodes') ->where('code_action', $action) ->where('action_code', $code) ->where('user_id', $user) ->count(); // Invalidate the code if requested if ($get && $invalidate) { self::invalidate($code); } // Return the result return $get > 0; } /** * Make a code invalid. * @param string $code */ public static function invalidate(string $code): void { DB::table('actioncodes') ->where('action_code', $code) ->delete(); } }