Current File : /var/www/vhosts/missauthor.com/httpdocs/wp-includes/class-wp-session-tokens.php
<?php
/**
 * Session API: WP_Session_Tokens class
 *
 * @package WordPress
 * @subpackage Session
 * @since 4.7.0
 */

/**
 * Abstract class for managing user session tokens.
 *
 * @since 4.0.0
 */
#[AllowDynamicProperties]
abstract class WP_Session_Tokens {

	/**
	 * User ID.
	 *
	 * @since 4.0.0
	 * @var int User ID.
	 */
	protected $user_id;

	/**
	 * Protected constructor. Use the `get_instance()` method to get the instance.
	 *
	 * @since 4.0.0
	 *
	 * @param int $user_id User whose session to manage.
	 */
	protected function __construct( $user_id ) {
		$this->user_id = $user_id;
	}

	/**
	 * Retrieves a session manager instance for a user.
	 *
	 * This method contains a {@see 'session_token_manager'} filter, allowing a plugin to swap out
	 * the session manager for a subclass of `WP_Session_Tokens`.
	 *
	 * @since 4.0.0
	 *
	 * @param int $user_id User whose session to manage.
	 * @return WP_Session_Tokens The session object, which is by default an instance of
	 *                           the `WP_User_Meta_Session_Tokens` class.
	 */
	final public static function get_instance( $user_id ) {
		/**
		 * Filters the class name for the session token manager.
		 *
		 * @since 4.0.0
		 *
		 * @param string $session Name of class to use as the manager.
		 *                        Default 'WP_User_Meta_Session_Tokens'.
		 */
		$manager = apply_filters( 'session_token_manager', 'WP_User_Meta_Session_Tokens' );
		return new $manager( $user_id );
	}

	/**
	 * Hashes the given session token for storage.
	 *
	 * @since 4.0.0
	 *
	 * @param string $token Session token to hash.
	 * @return string A hash of the session token (a verifier).
	 */
	private function hash_token( $token ) {
		return hash( 'sha256', $token );
	}

	/**
	 * Retrieves a user's session for the given token.
	 *
	 * @since 4.0.0
	 *
	 * @param string $token Session token.
	 * @return array|null The session, or null if it does not exist.
	 */
	final public function get( $token ) {
		$verifier = $this->hash_token( $token );
		return $this->get_session( $verifier );
	}

	/**
	 * Validates the given session token for authenticity and validity.
	 *
	 * Checks that the given token is present and hasn't expired.
	 *
	 * @since 4.0.0
	 *
	 * @param string $token Token to verify.
	 * @return bool Whether the token is valid for the user.
	 */
	final public function verify( $token ) {
		$verifier = $this->hash_token( $token );
		return (bool) $this->get_session( $verifier );
	}

	/**
	 * Generates a session token and attaches session information to it.
	 *
	 * A session token is a long, random string. It is used in a cookie
	 * to link that cookie to an expiration time and to ensure the cookie
	 * becomes invalidated when the user logs out.
	 *
	 * This function generates a token and stores it with the associated
	 * expiration time (and potentially other session information via the
	 * {@see 'attach_session_information'} filter).
	 *
	 * @since 4.0.0
	 *
	 * @param int $expiration Session expiration timestamp.
	 * @return string Session token.
	 */
	final public function create( $expiration ) {
		/**
		 * Filters the information attached to the newly created session.
		 *
		 * Can be used to attach further information to a session.
		 *
		 * @since 4.0.0
		 *
		 * @param array $session Array of extra data.
		 * @param int   $user_id User ID.
		 */
		$session               = apply_filters( 'attach_session_information', array(), $this->user_id );
		$session['expiration'] = $expiration;

		// IP address.
		if ( ! empty( $_SERVER['REMOTE_ADDR'] ) ) {
			$session['ip'] = $_SERVER['REMOTE_ADDR'];
		}

		// User-agent.
		if ( ! empty( $_SERVER['HTTP_USER_AGENT'] ) ) {
			$session['ua'] = wp_unslash( $_SERVER['HTTP_USER_AGENT'] );
		}

		// Timestamp.
		$session['login'] = time();

		$token = wp_generate_password( 43, false, false );

		$this->update( $token, $session );

		return $token;
	}

	/**
	 * Updates the data for the session with the given token.
	 *
	 * @since 4.0.0
	 *
	 * @param string $token Session token to update.
	 * @param array  $session Session information.
	 */
	final public function update( $token, $session ) {
		$verifier = $this->hash_token( $token );
		$this->update_session( $verifier, $session );
	}

	/**
	 * Destroys the session with the given token.
	 *
	 * @since 4.0.0
	 *
	 * @param string $token Session token to destroy.
	 */
	final public function destroy( $token ) {
		$verifier = $this->hash_token( $token );
		$this->update_session( $verifier, null );
	}

	/**
	 * Destroys all sessions for this user except the one with the given token (presumably the one in use).
	 *
	 * @since 4.0.0
	 *
	 * @param string $token_to_keep Session token to keep.
	 */
	final public function destroy_others( $token_to_keep ) {
		$verifier = $this->hash_token( $token_to_keep );
		$session  = $this->get_session( $verifier );
		if ( $session ) {
			$this->destroy_other_sessions( $verifier );
		} else {
			$this->destroy_all_sessions();
		}
	}

	/**
	 * Determines whether a session is still valid, based on its expiration timestamp.
	 *
	 * @since 4.0.0
	 *
	 * @param array $session Session to check.
	 * @return bool Whether session is valid.
	 */
	final protected function is_still_valid( $session ) {
		return $session['expiration'] >= time();
	}

	/**
	 * Destroys all sessions for a user.
	 *
	 * @since 4.0.0
	 */
	final public function destroy_all() {
		$this->destroy_all_sessions();
	}

	/**
	 * Destroys all sessions for all users.
	 *
	 * @since 4.0.0
	 */
	final public static function destroy_all_for_all_users() {
		/** This filter is documented in wp-includes/class-wp-session-tokens.php */
		$manager = apply_filters( 'session_token_manager', 'WP_User_Meta_Session_Tokens' );
		call_user_func( array( $manager, 'drop_sessions' ) );
	}

	/**
	 * Retrieves all sessions for a user.
	 *
	 * @since 4.0.0
	 *
	 * @return array Sessions for a user.
	 */
	final public function get_all() {
		return array_values( $this->get_sessions() );
	}

	/**
	 * Retrieves all sessions of the user.
	 *
	 * @since 4.0.0
	 *
	 * @return array Sessions of the user.
	 */
	abstract protected function get_sessions();

	/**
	 * Retrieves a session based on its verifier (token hash).
	 *
	 * @since 4.0.0
	 *
	 * @param string $verifier Verifier for the session to retrieve.
	 * @return array|null The session, or null if it does not exist.
	 */
	abstract protected function get_session( $verifier );

	/**
	 * Updates a session based on its verifier (token hash).
	 *
	 * Omitting the second argument destroys the session.
	 *
	 * @since 4.0.0
	 *
	 * @param string $verifier Verifier for the session to update.
	 * @param array  $session  Optional. Session. Omitting this argument destroys the session.
	 */
	abstract protected function update_session( $verifier, $session = null );

	/**
	 * Destroys all sessions for this user, except the single session with the given verifier.
	 *
	 * @since 4.0.0
	 *
	 * @param string $verifier Verifier of the session to keep.
	 */
	abstract protected function destroy_other_sessions( $verifier );

	/**
	 * Destroys all sessions for the user.
	 *
	 * @since 4.0.0
	 */
	abstract protected function destroy_all_sessions();

	/**
	 * Destroys all sessions for all users.
	 *
	 * @since 4.0.0
	 */
	public static function drop_sessions() {}
}
Lory Pattanaik – Miss Author

Content from Heart

Stay In Loop

01 

ABOUT ME

my biography

It’s LORY !!! The Lullaby.

A very rare combination of an Engineer, Human Resource Strategist, Entrepreneur, Writer & Journalist.

In previous incarnation (Yr2009), she joined Power Sector as an Instrumentation Engineer and flipped the stereotypical concept of which had almost made everyone believe that Girls in Power Plant can only be given documentation work. Right from green field project to erection and commissioning of the Plant she served 8 years with dedication and commitment.

.

Risk and Reward in the Land of Myth: Exploring the Thrills and Perils of Gambling at Casino Greece's Legendary Casinos

Embark on a thrilling journey through the world of gambling in the ancient land of Greece, where mythology meets modern-day excitement at the renowned Casino Greece. As you step into the opulent establishments adorned with statues of the gods, such as Zeus and Athena, the ambiance resonates with the echoes of past glories. The allure of the games of chance beckons, promising both risk and reward in equal measure. Whether you're drawn to the spinning roulette wheels or the strategic card tables, the thrill of the unknown awaits every player who crosses the threshold of these legendary casinos.

One of the highlights of visiting Casino Greece is the diverse range of gaming options available to suit every preference and skill level. From classic favorites like blackjack and poker to the latest in slot machine technology, there's something for everyone to enjoy. The atmosphere is electric with anticipation as players test their luck against the house, hoping for that elusive jackpot to materialize. The blend of tradition and innovation creates an unforgettable experience for each visitor, making it a must-visit destination for both casual players and high rollers alike.

For those seeking the convenience and comfort of playing from anywhere, online casinos Greece offer a digital gateway to the thrilling world of gambling. With a simple click, players can access a virtual realm that replicates the excitement of a land-based casino, complete with realistic graphics and immersive sound effects. The allure of online casinos Greece lies in their accessibility and flexibility, allowing individuals to enjoy their favorite games at any time or place. Whether it's a quick round of slots during a coffee break or a strategic game of poker from the comfort of home, the virtual realm of online gambling opens up a world of possibilities for enthusiasts.

At Casino Greece, the pursuit of fortune is intertwined with a sense of adventure and mystery. The iconic architecture of the casinos serves as a backdrop to the exhilarating gameplay, where every spin of the wheel and flip of the card holds the promise of a life-changing win. The legacy of gambling in Greece is woven into the very fabric of these establishments, creating an atmosphere that resonates with echoes of the past. As players immerse themselves in the thrill of the games, they become part of a rich tapestry of tradition and excitement that defines the spirit of these legendary casinos.

Experience the fusion of ancient myth and modern-day entertainment at Casino Greece, where the thrill of gambling transcends time and captivates players from around the world. With a commitment to excellence and a dedication to providing an unforgettable gaming experience, these legendary casinos stand as beacons of excitement and opportunity in the heart of Greece. Whether you're a seasoned gambler or a curious newcomer, the spirit of adventure awaits at Casino Greece, where risk and reward converge in a whirlwind of excitement and anticipation.

Latest Works

My bestsellers

02 

NON FICTION

by lory pattanaik

NON FICTION

by lory pattanaik

hr guide

by lory pattanaik

Events

MODERATION | PANEL DISCUSSION | INTERVIEWS


03 

testimonials

brand
Working with Lory Patnaik when she took my interview for bhaskar is great remembrance as she was precise to the point & smooth writer it was pleasant & unforgettable writing.
Jk Arora
Chairman SOM Group
brand
It was an wonderful experience working with Ms Lory Pattanaik. The Publication of my Autobiography could be possible just because of her expertise, dedication and sincere efforts in interviewing me , writing and editing the contents.
OP Singhania
Chattered Account, Raipur
brand
Lory Pattanaik has many different skills and talents; she is incredibly generous with her knowledge and support and always enthusiastic, energetic and passionate! I feel very fortunate to work with her as one of the core team member of a socio-cultural community platform. Apart from having excellent knowledge in Content Writing and extensive experience as an upcoming entrepreneur being Co-Founder of WEBODOCTOR, Lory is a great human being and one of the most reliable and hardworking individual. I have always found her to be realistic in her approach in terms of achieving objectives for an organization, a genuine team player with excellent leadership qualities, any team would be lucky to have a valuable asset like Lory in team.
Sanjib Kumar Mohanty
Sr. Advocate, Supreme Court of India Chairperson, Odisha Positive
brand
Lory it's always been wonderful to see you grow as an Entrepreneur and an Author. Your utmost dedication and time bounded approach is what makes your work look unique.
Ajay Shrivastava
Chief General Manager, SAGE GROUP
brand
I am Aniruddha Sangamnerkar and Chairman of Athanaad Sanskruti LLP. I have a very good and extensive experience of content writing of Lory Pattanaik (or Webodoctor). The contents are expressive enough, effective to commensurate with the purpose, audience and our brand.I wish Lory a happy Content Writing.
Aniruddh Sangamnekar
Chairman, Athanaad Sanskruti LLP
brand
Dearest lory......
You are simply superb.....👏👍
The way you keep everyone captivating is highly commendable😊
Big fan of yours🙏
and.....
Thanks so very much for making yesterday's event so interesting 
Ar. Ritesh Harwani
Bhopal, MP
brand
It was a great experience to share the Dias with you. Your oratorial skills are exemplary. You effortlessly delved into the nuances of philosophy of architecture. Wishing you all the best.
Ar. Manoj Choubey
Bhopal, MP
k

Total Pages

Active Readers

k Hrs

Working Hours

+

Coffee mugs

Let's Chat Now

contact me

Contact no:-  7000926009, 9438569962

Corporate Address:-  E-3/114, 10 No. Market, E-3, Arera Colony, 

Bhopal, Madhya Pradesh 462016

Webodoctor©.  All rights reserved.