\Yezervasyon\Yezervasyon\Controllers\GirisController.cs
Return Back
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;
using System.Web.Configuration;
using System.Web.Mvc;
using System.Web.Security;
using Cekirdek;
using Entities;
using Newtonsoft.Json.Linq;
namespace Yezervasyon.Controllers
{
public class GirisController : Controller
{
[HttpGet]
public ActionResult Giris()
{
if (GirisYapildi())
{
return RedirectToAction("Anasayfa", "Anasayfa");
}
if (GirisYapildi() && YetkiKontrol.YetkiliMi())
{
return RedirectToAction("Yetkili", "Yetkili");
}
return View();
}
public static bool GirisYapildi()
{
if (KullaniciBilgi.Getir() != null)
{
return true;
}
return false;
}
private static readonly HttpClient Client = new HttpClient();
private static async Task<JObject> BapiGirisKontrol(Kullanici kullanici)
{
var anahtarlar = new Dictionary<string, string>
{
{"Anahtar", "CUSTOM_ANAHTAR"},
{"KullaniciAd", kullanici.Ad},
{"Parola", kullanici.Sifre}
};
var icerik = new FormUrlEncodedContent(anahtarlar);
var cevap = await Client.PostAsync("CUSTOM_URL", icerik);
var cevapStr = await cevap.Content.ReadAsStringAsync();
return JObject.Parse(cevapStr);
}
private static async Task<string> ObsBilgiGetir(string kimlikNo)
{
var anahtarlar = new Dictionary<string, string>
{
{"Anahtar", "CUSTOM_ANAHTAR"},
{"TcKimlikNo", kimlikNo}
};
var icerik = new FormUrlEncodedContent(anahtarlar);
var cevap = await Client.PostAsync("CUSTOM_URL", icerik);
var cevapStr = await cevap.Content.ReadAsStringAsync();
return cevapStr;
}
[HttpPost]
public async Task<ActionResult> Giris(Kullanici kullanici)
{
try
{
if (GirisYapildi())
{
return RedirectToAction("Anasayfa", "Anasayfa");
}
Kullanici cookieKullanici = null;
if (kullanici.Ad == WebConfigurationManager.AppSettings["YetkiliKullaniciAd"] &&
kullanici.Sifre == WebConfigurationManager.AppSettings["YetkiliKullaniciSifre"])
{
cookieKullanici = new Kullanici
{
TcNo = (-1).ToString(),
Ad = WebConfigurationManager.AppSettings["KontrolEdilecekBirim"],
Soyad = "Yetkili"
};
}
else
{
dynamic bapiKullanici = await BapiGirisKontrol(kullanici);
if (!Convert.ToBoolean(bapiKullanici.ParolaDogrula))
{
throw new Exception("Girmiş olduğunuz kullanıcı adı veya şifre yanlıştır!");
}
foreach (var rol in bapiKullanici.Roller)
{
if (rol == "CUSTOM_ROL" || rol == "CUSTOM_ROL" || rol == "CUSTOM_ROL")
{
cookieKullanici = new Kullanici
{
TcNo = bapiKullanici.TcKimlikNo,
Ad = bapiKullanici.Ad,
Soyad = bapiKullanici.Soyad
};
return Cookie(cookieKullanici);
}
}
var obsKullanici = JObject.Parse(await ObsBilgiGetir(bapiKullanici.TcKimlikNo.ToString()));
foreach (var ogrenciBilgi in obsKullanici.Ogrenci.OgrenimBilgileri)
{
if (Convert.ToBoolean(ogrenciBilgi.BolumKaydiAktifMi) &&
ogrenciBilgi.BirimAd == WebConfigurationManager.AppSettings["KontrolEdilecekBirim"])
{
cookieKullanici = new Kullanici
{
TcNo = obsKullanici.Ogrenci.TcKimlikNo,
Ad = obsKullanici.Ogrenci.Ad,
Soyad = obsKullanici.Ogrenci.Soyad,
BirimAd = ogrenciBilgi.BirimAd
};
break;
}
if (ogrenciBilgi.BirimAd == WebConfigurationManager.AppSettings["KontrolEdilecekBirim"] &&
!Convert.ToBoolean(ogrenciBilgi.BolumKaydiAktifMi))
{
throw new Exception("Geçerli birimde aktif kullanıcı değilsiniz.");
}
}
}
return Cookie(cookieKullanici);
}
catch (Exception e)
{
Console.WriteLine(e);
switch (e.Message)
{
case "Girmiş olduğunuz kullanıcı adı veya şifre yanlıştır!":
case "Geçerli birimde aktif kullanıcı değilsiniz.":
TempData["Basarisiz"] = e.Message;
break;
default:
TempData["Basarisiz"] = "Giriş başarısız. Lütfen yöneticiye danışın.";
break;
}
return RedirectToAction("Giris");
}
}
private RedirectToRouteResult Cookie(Kullanici kullanici)
{
var ticket = new FormsAuthenticationTicket(1,
kullanici.TcNo,
DateTime.Now,
DateTime.Now.AddDays(7),
true,
Serialize.ConvertJson(kullanici),
FormsAuthentication.FormsCookiePath);
var encryptTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptTicket) {HttpOnly = true};
Response.Cookies.Add(cookie);
return RedirectToAction("Anasayfa", "Anasayfa");
}
public ActionResult CikisYap()
{
if (GirisYapildi() && Response.Cookies["Rezervasyon_Kullanici"] != null)
{
Response.Cookies["Rezervasyon_Kullanici"].Expires = DateTime.Now.AddYears(-1);
}
return RedirectToAction("Giris", "Giris");
}
}
}
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;
using System.Web.Configuration;
using System.Web.Mvc;
using System.Web.Security;
using Cekirdek;
using Entities;
using Newtonsoft.Json.Linq;
namespace Yezervasyon.Controllers
{
public class GirisController : Controller
{
[HttpGet]
public ActionResult Giris()
{
if (GirisYapildi())
{
return RedirectToAction("Anasayfa", "Anasayfa");
}
if (GirisYapildi() && YetkiKontrol.YetkiliMi())
{
return RedirectToAction("Yetkili", "Yetkili");
}
return View();
}
public static bool GirisYapildi()
{
if (KullaniciBilgi.Getir() != null)
{
return true;
}
return false;
}
private static readonly HttpClient Client = new HttpClient();
private static async Task<JObject> BapiGirisKontrol(Kullanici kullanici)
{
var anahtarlar = new Dictionary<string, string>
{
{"Anahtar", "CUSTOM_ANAHTAR"},
{"KullaniciAd", kullanici.Ad},
{"Parola", kullanici.Sifre}
};
var icerik = new FormUrlEncodedContent(anahtarlar);
var cevap = await Client.PostAsync("CUSTOM_URL", icerik);
var cevapStr = await cevap.Content.ReadAsStringAsync();
return JObject.Parse(cevapStr);
}
private static async Task<string> ObsBilgiGetir(string kimlikNo)
{
var anahtarlar = new Dictionary<string, string>
{
{"Anahtar", "CUSTOM_ANAHTAR"},
{"TcKimlikNo", kimlikNo}
};
var icerik = new FormUrlEncodedContent(anahtarlar);
var cevap = await Client.PostAsync("CUSTOM_URL", icerik);
var cevapStr = await cevap.Content.ReadAsStringAsync();
return cevapStr;
}
[HttpPost]
public async Task<ActionResult> Giris(Kullanici kullanici)
{
try
{
if (GirisYapildi())
{
return RedirectToAction("Anasayfa", "Anasayfa");
}
Kullanici cookieKullanici = null;
if (kullanici.Ad == WebConfigurationManager.AppSettings["YetkiliKullaniciAd"] &&
kullanici.Sifre == WebConfigurationManager.AppSettings["YetkiliKullaniciSifre"])
{
cookieKullanici = new Kullanici
{
TcNo = (-1).ToString(),
Ad = WebConfigurationManager.AppSettings["KontrolEdilecekBirim"],
Soyad = "Yetkili"
};
}
else
{
dynamic bapiKullanici = await BapiGirisKontrol(kullanici);
if (!Convert.ToBoolean(bapiKullanici.ParolaDogrula))
{
throw new Exception("Girmiş olduğunuz kullanıcı adı veya şifre yanlıştır!");
}
foreach (var rol in bapiKullanici.Roller)
{
if (rol == "CUSTOM_ROL" || rol == "CUSTOM_ROL" || rol == "CUSTOM_ROL")
{
cookieKullanici = new Kullanici
{
TcNo = bapiKullanici.TcKimlikNo,
Ad = bapiKullanici.Ad,
Soyad = bapiKullanici.Soyad
};
return Cookie(cookieKullanici);
}
}
var obsKullanici = JObject.Parse(await ObsBilgiGetir(bapiKullanici.TcKimlikNo.ToString()));
foreach (var ogrenciBilgi in obsKullanici.Ogrenci.OgrenimBilgileri)
{
if (Convert.ToBoolean(ogrenciBilgi.BolumKaydiAktifMi) &&
ogrenciBilgi.BirimAd == WebConfigurationManager.AppSettings["KontrolEdilecekBirim"])
{
cookieKullanici = new Kullanici
{
TcNo = obsKullanici.Ogrenci.TcKimlikNo,
Ad = obsKullanici.Ogrenci.Ad,
Soyad = obsKullanici.Ogrenci.Soyad,
BirimAd = ogrenciBilgi.BirimAd
};
break;
}
if (ogrenciBilgi.BirimAd == WebConfigurationManager.AppSettings["KontrolEdilecekBirim"] &&
!Convert.ToBoolean(ogrenciBilgi.BolumKaydiAktifMi))
{
throw new Exception("Geçerli birimde aktif kullanıcı değilsiniz.");
}
}
}
return Cookie(cookieKullanici);
}
catch (Exception e)
{
Console.WriteLine(e);
switch (e.Message)
{
case "Girmiş olduğunuz kullanıcı adı veya şifre yanlıştır!":
case "Geçerli birimde aktif kullanıcı değilsiniz.":
TempData["Basarisiz"] = e.Message;
break;
default:
TempData["Basarisiz"] = "Giriş başarısız. Lütfen yöneticiye danışın.";
break;
}
return RedirectToAction("Giris");
}
}
private RedirectToRouteResult Cookie(Kullanici kullanici)
{
var ticket = new FormsAuthenticationTicket(1,
kullanici.TcNo,
DateTime.Now,
DateTime.Now.AddDays(7),
true,
Serialize.ConvertJson(kullanici),
FormsAuthentication.FormsCookiePath);
var encryptTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptTicket) {HttpOnly = true};
Response.Cookies.Add(cookie);
return RedirectToAction("Anasayfa", "Anasayfa");
}
public ActionResult CikisYap()
{
if (GirisYapildi() && Response.Cookies["Rezervasyon_Kullanici"] != null)
{
Response.Cookies["Rezervasyon_Kullanici"].Expires = DateTime.Now.AddYears(-1);
}
return RedirectToAction("Giris", "Giris");
}
}
}