#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Structure for User
typedef struct {
char username[50];
char password[50];
char role[10]; // Admin, User, or Guest
} User;
// Predefined users (In real systems, use a database)
User users[] = {
{"admin", "admin123", "Admin"},
{"user1", "user123", "User"},
{"guest1", "guest123", "Guest"}
};
int user_count = 3;
User *logged_in_user = NULL;
// Function to authenticate user
int authenticate(char *username, char *password) {
for (int i = 0; i < user_count; i++) {
if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) {
logged_in_user = &users[i];
return 1;
}
}
return 0;
}
// Function to check access permissions
int check_access(char *resource) {
if (strcmp(logged_in_user->role, "Admin") == 0) {
return 1; // Admins can access all resources
}
else if (strcmp(logged_in_user->role, "User") == 0 && strcmp(resource, "public") == 0) {
return 1; // Users can access public resources
}
else if (strcmp(logged_in_user->role, "Guest") == 0 && strcmp(resource, "guest") == 0) {
return 1; // Guests can access guest resources
}
return 0;
}
// Function to access resource
void access_resource(char *resource) {
printf("\nAttempting to access: %s\n", resource);
if (check_access(resource)) {
printf("Access Granted to %s\n", resource);
} else {
printf("Access Denied to %s\n", resource);
}
}
// Main Menu
void menu() {
int choice;
char resource[20];
while (1) {
printf("\n--- Access Control System ---\n");
printf("1. Access Public Resource\n");
printf("2. Access Admin Resource\n");
printf("3. Access Guest Resource\n");
printf("4. Logout\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
access_resource("public");
break;
case 2:
access_resource("admin");
break;
case 3:
access_resource("guest");
break;
case 4:
printf("Logging out...\n");
logged_in_user = NULL;
return;
default:
printf("Invalid choice!\n");
}
}
}
// Main Function
int main() {
char username[50];
char password[50];
printf("--- Welcome to Access Control System ---\n");
while (1) {
printf("\nPlease Login:\n");
printf("Username: ");
scanf("%s", username);
printf("Password: ");
scanf("%s", password);
if (authenticate(username, password)) {
printf("\nLogin Successful! Welcome %s\n", logged_in_user->username);
menu();
} else {
printf("Invalid Credentials!