Skip to main content

Overview

The SessionManager class handles user session persistence across app launches. It stores user credentials and role information in Android’s SharedPreferences, enabling automatic login and role-based navigation.
This class is used throughout the app to maintain user authentication state and determine role-based access control.

Class Definition

SessionManager.java
package project.avishkar.salesmanagement;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class SessionManager {
    SharedPreferences pref;
    Editor editor;
    Context _context;
    int PRIVATE_MODE = 0;

    private static final String PREF_NAME = "Details";
    private static final String UNIQ_ID = "id";
    public static final String ROLE = "role";
}

Constructor

SessionManager(Context context)
void
Initializes the session manager with application context and sets up SharedPreferences.Parameters:
  • context (Context) - Application context for accessing SharedPreferences
Example:
SessionManager sm = new SessionManager(getApplicationContext());

Methods

createLoginSession

public void createLoginSession(String id, String role)
Stores user credentials and role in SharedPreferences when a user successfully logs in.
id
String
required
The unique identifier for the user (typically email or Firebase UID)
role
String
required
The user’s role - either “Manager” or “Salesperson”
Usage Example:
MainActivity.java
// After successful Firebase authentication
SessionManager sessionManager = new SessionManager(getApplicationContext());
sessionManager.createLoginSession(user.getEmail(), "Manager");

// Navigate to appropriate dashboard
if (role.equals("Manager")) {
    startActivity(new Intent(this, ManagerMain.class));
} else {
    startActivity(new Intent(this, SalespersonMain.class));
}

getUserDetails

public HashMap<String, String> getUserDetails()
Retrieves the stored user session information. Returns: HashMap containing:
  • "id" - User identifier (or “Not Found” if no session exists)
  • "role" - User role (or “Not Found” if no session exists)
id
String
The stored user identifier from the active session
role
String
The stored user role (“Manager” or “Salesperson”)
Usage Example:
SessionManager sm = new SessionManager(getApplicationContext());
HashMap<String, String> details = sm.getUserDetails();
String userId = details.get("id");
String userRole = details.get("role");

if (userRole.equals("Manager")) {
    // Load manager-specific data
}

logoutUser

public void logoutUser()
Clears all session data from SharedPreferences, effectively logging out the user. Usage Example:
AccountManager.java
// When user clicks logout button
SessionManager sessionManager = new SessionManager(getApplicationContext());
sessionManager.logoutUser();

// Redirect to login screen
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();

Constants

PREF_NAME
String
default:"Details"
The name of the SharedPreferences file where session data is stored
UNIQ_ID
String
default:"id"
Key for storing/retrieving the user identifier
ROLE
String
default:"role"
Public constant key for storing/retrieving the user role
PRIVATE_MODE
int
default:"0"
SharedPreferences access mode (private to this app)

Integration Points

The SessionManager is used in several key activities:
  1. MainActivity - Checks for existing session on app launch
  2. ManagerMain - Retrieves manager ID for data queries
  3. SalespersonMain - Retrieves salesperson ID for personalization
  4. MyTeam - Gets manager ID to filter team members
  5. AccountManager - Provides logout functionality

Source Reference

File: ~/workspace/source/app/src/main/java/project/avishkar/salesmanagement/SessionManager.java

Related Classes

View AccountManager documentation for logout implementation

Build docs developers (and LLMs) love