Advertisement
tumuldousMadman

Login IKIMINA

Nov 21st, 2023 (edited)
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.80 KB | None | 0 0
  1. using Microsoft.AspNetCore.Authentication.Cookies;
  2. using Microsoft.AspNetCore.Authentication;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.AspNetCore.Mvc.RazorPages;
  5. using System.Data.SqlClient;
  6. using System.Security.Claims;
  7.  
  8. namespace IKIMINA_CYACU.Pages.Users
  9. {
  10.     public class LoginModel : PageModel
  11.     {
  12.         string conString = "Data Source=JN-JUSTE\\SQLEXPRESS;Initial Catalog=IKIMINACYACUProject;Integrated Security=True;Encrypt=False";
  13.         public string message = "";
  14.         public void OnGet()
  15.         {
  16.         }
  17.  
  18.         private bool AuthenticateUser(string username, string password, out string userRole)
  19.         {
  20.             userRole = null;
  21.  
  22.             try
  23.             {
  24.                 using (SqlConnection con = new SqlConnection(conString))
  25.                 {
  26.                     string qry = "SELECT UserName, Role FROM USERS WHERE UserName = @username AND Password = @password";
  27.                     con.Open();
  28.  
  29.                     using (SqlCommand cmd = new SqlCommand(qry, con))
  30.                     {
  31.                         cmd.Parameters.AddWithValue("@username", username);
  32.                         cmd.Parameters.AddWithValue("@password", password);
  33.  
  34.                         using (SqlDataReader reader = cmd.ExecuteReader())
  35.                         {
  36.                             if (reader.Read())
  37.                             {
  38.                                 userRole = reader.GetString(reader.GetOrdinal("Role"));
  39.                                 return true; // Authentication successful
  40.                             }
  41.                             else
  42.                             {
  43.                                 return false; // Authentication failed
  44.                             }
  45.                         }
  46.                     }
  47.                 }
  48.             }
  49.             catch (Exception)
  50.             {
  51.                 throw;
  52.             }
  53.         }
  54.         public IActionResult OnPost()
  55.         {
  56.             try
  57.             {
  58.                 string enteredUsername = Request.Form["username"];
  59.                 string enteredPassword = Request.Form["password"];
  60.  
  61.                 if (AuthenticateUser(enteredUsername, enteredPassword, out string userRole))
  62.                 {
  63.                     var claims = new List<Claim>
  64.                     {
  65.                         new Claim(ClaimTypes.Name, enteredUsername),
  66.                         new Claim(ClaimTypes.Role, userRole),
  67.                     };
  68.  
  69.                     var userIdentity = new ClaimsIdentity(claims, "login");
  70.                     var userPrincipal = new ClaimsPrincipal(userIdentity);
  71.  
  72.                     HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, userPrincipal);
  73.  
  74.                     if (userRole.Equals("ADMIN", StringComparison.OrdinalIgnoreCase))
  75.                     {
  76.                         message = $"Welcome dear {userRole} {enteredUsername}!";
  77.                         return RedirectToPage("/Users/CreateUser");
  78.                     }
  79.                     else if (userRole.Equals("MEMBER", StringComparison.OrdinalIgnoreCase))
  80.                     {
  81.                         message = $"Welcome dear {userRole} {enteredUsername}!";
  82.                         return RedirectToPage("/Index");
  83.                     }
  84.                     else
  85.                     {
  86.                         message = "Invalid role for user";
  87.                         return Page();
  88.                     }
  89.                 }
  90.                 else
  91.                 {
  92.                     message = "Invalid username or password";
  93.                     return Page();
  94.                 }
  95.             }
  96.             catch (Exception ex)
  97.             {
  98.                 message = "There's a problem: " + ex.Message;
  99.                 return Page();
  100.             }
  101.         }
  102.     }
  103. }
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement