Skip to content

ekinglsmakn/Vet-Clinic-Crm-With-Java-Thymeleaf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vet Clinic CRM

Bu proje veteriner klinik işlemleri için geliştirilmiştir. Rol tabanlı bir yetkilendirme yapısı bulunmaktadır. Tanımlanan yetkiye göre sisteme, evcil hayvan sahibi veya evcil hayvan eklenebilmektedir. Var olan kayıtlar üzerinde güncelleme yapılabilir, silinebilir ve incelenebilir (CRUD Methods). Ayrıca evcil hayvan adı ya da hayvan sahibi adı üzerinden arama yapılabilmektedir.

Uygulamada Kullanılan Teknolojiler;

👩‍💻 Kullanılan IDE : Intellij IDEA

  • Java Spring Boot
  • Spring Security
  • Spring Data JPA
  • Maven Plugin
  • PostgreSql
  • Thymeleaf
  • Bootstrap
  • Html/Css
  • Hibernate

Proje Nasıl Çalışır?

Projede Java 8 ve JDK 1.8 ile çalışılmıştır. Dolayısıyla JDK 1.8'in bilgisayarda kurulu olduğundan emin olmak gerekmektedir. Ayrıca PostgreSql Veri tabanı gerekmektedir. Projenin veri tabanı backup'ı aşağıda verilmiştir. Uygulama ayağa kaldırılmadan önce login ile giriş yapabilmek için bir veri tabanı oluşturulup, indirilen "vetClinicCrm.sql" isimli backup'ın, oluşturulan veri tabanına restore edilmesi gerekmektedir. Uygulama 8080 portunda çalışmaktadır.🎉

Veri Tabanını indirmek için tıklayınız


  :diamonds: Projede PostgreSql Veri Tabanı kullanılmıştır. ER Diyagramı aşağıdaki gibidir.

Uygulama sistemine göre; bir evcil hayvan sahibinin n adet evcil hayvanı olabilir ancak bir evcil hayvanın yalnıca bir adet sahibi olabilir. Yani "Pet" ve "PetOwner" tabloları arasında "manyToOne - oneToMany"ilişkisi vardır.

"User" ve "Role" tabloları arasında ise "manyToMany" ilişki vardır. Bu ilişkiye göre; bir kullanıcı birden fazla yetkiye sahip olabilir ve bir yetki(rol) birden fazla kullanıcıya ait olabilir. Bu ilişki sonucunda veri tabanında "users_roles" adlı bir tablo daha oluşturulmuştur.

♦️ Entity classları

  • Pet
  • PetOwner
  • User
  • Role

♦️ Veri Tabanı Tabloları

  • Pet
  • PetOwner
  • User
  • Role
  • Users_Roles

Login Sayfası

Spring Security'nin sağladığı default login sayfası customize edilerek aşağıdaki Login Sayfası oluşturulmuştur. Bu sayfaya uygulama ayağa kaldırıldıktan sonra web browser üzerinden "http://localhost:8080/login" url'i ile ulaşılabilmektedir.

Spring Security ayarları için öncelikle "pom.xml" içine gerekli dependency'ler eklenmiştir. Gerekli configurasyon ayarları ise "SecurityConfiguration" klasörü altında "WebSecurityConfig" classı içinde yapılmıştır.


Sistemde default olarak 2 adet kullanıcı tanımlanmıştır. Bunlardan bir tanesi ADMIN, diğeri ise USER rolüne sahiptir. Sisteme e-mail ve parola ile giriş yapılmaktadır. Tanımlanan kullanıcı bilgileri veri tabanından çekilmektedir. Parolalar veri tabanında BCryptPasswordEncoder ile hashlenerek saklanmıştır.

  • E-mail : "admin@admin.com" , Parola : "admin123" , Rol : ADMIN , UserName : "admin"
  • E-mail : "user@user.com" , Parola : "user123" , Rol : USER , UserName : "ekin"
  • URL --> "http://localhost:8080/login" ya da "http://localhost:8080"


Ana Sayfa

Ana Sayfada giriş yapan kullanıcının sahip olduğu kullanıcı adı ve rolü görünmektedir.

♦️ Admin rolüne sahip kullanıcının giriş yaptığı ana sayfa



♦️ User rolüne sahip kullanıcının giriş yaptığı ana sayfa



Yetkilendirme ( Rol Bazlı Sistem )

"ADMIN" rolüne sahip kullanıcı tüm yetkilere sahiptir. Hayvan ve Sahip ekleyebilir, silebilir, güncelleyebilir ve inceleyebilir. Ancak sadece "USER" rolüne sahip kullanıcıların yetkileri kısıtlanmıştır. Silme işlemi gerçekleştiremezler. Hem "ADMIN" hem de "USER" yetkisine sahip kullanıcılar da tüm yetkilere sahip olabilmektedir. User ve Role tabloları arasında manyToMany ilişki bulunduğu için bir kullanıcı aynı anda iki role sahip olabilmektedir.

   ♦️ ADMIN rolüne sahip kullanıcı tarafından görüntülenen evcil hayvan ve sahip sayfaları (Tüm butonlar aktif)



   ♦️ USER rolüne sahip kullanıcı tarafından görüntülenen evcil hayvan ve sahip sayfaları (Sil Butonunu göremezler)   



USER rolüne sahip kullanıcılar menude yer alan (navbarda yer alan) "Kullanıcılar" sayfasına da erişemezler. Sistemdeki kayıtlı kullanıcılar ancak ADMIN rolüne sahip kullanıcılar görebilmektedirler. User rolündeki kullanıcı menudeki "Kullanıcılar" linkine tıklarsa ""Access Denied"" sayfasına yönlendirilirler. Bu sayfa 403 hatasının spring security ile customize edilmesi ile elde edilmiştir.

   ♦️ USER rolüne sahip kullanıcı tarafından görüntülenen menudeki "Kullanıcılar" linki
  



Evcil Hayvan - Sahip İlişkisi

♦️ Her evcil hayvanın bir sahibi olmak zorundadır. Ayrıntılı bilgilere hem evcil hayvan sayfasındaki İncele butonundan, hem de sahip listesi sayfasındaki İncele butonundan ulaşılabilmektedir.



♦️ Eğer evcil hayvan eklenmiş fakat sahip ataması yapılmamışsa (sistemde sahipsiz görünüyorsa) incele butonuna tıklandığında aşağıdaki sayfa görüntülenecektir. Çünkü uygulamada kurulan mimariye göre her evcil hayvanın sahibi olmak zorundadır.


♦️Yeni Evcil Hayvan Oluşturma

JPA save methodu ile oluşturulan kaydetme işlemidir.Form içerisinde evcil hayvan bilgileri alındıktan sonra PetOwner bilgileri açılır menu içerisinde listelenip sahip seçimi yapılmaktadır. Seçilen Sahibin id'si Pet tablosunda foreign key olduğu için evcil hayvanın sahibi de atanmış olmaktadır.


♦️Var Olan Evcil Hayvanı Güncelleme

Güncellenecek olan data seçildiğinde id'sine göre veri tabanında bir karşılaştırma yapılır ve yeni veriler JPA save methodu ile tekrar kaydedilir


♦️Yeni Sahip Oluşturma

Yeni sahip bilgileri form içerisinde alındıktan sonra JPA save methodu call edilir ve veritabanına kayıt işlemi yapılır.


♦️Sahip Güncelleme

Güncellenecek olan data seçildiğinde id'sine göre veri tabanında bir karşılaştırma yapılır ve yeni veriler JPA save methodu ile tekrar kaydedilir



İsme Göre Arama Yapma

Evcil Hayvan sayfasında hayvanın ismine göre arama yapılabilmektedir. Navbar menude bulunan search inputuna büyük-küçük harf farketmeksizin evcil hayvan adı yazarak arama işlemi gerçekleştirilir. Aynı şekilde Sahip sayfasında da search inputuna (ignoreCase) sahip adı yazarak arama yapılabilmektedir.

  

♦️ Evcil Hayvan ismine göre arama;

  

♦️ Sahip ismine göre arama;



Kullanıcılar Sayfası

Sistemde kayıtlı olan kullanıcılar veritabanından çekilerek listelenmektedir. Kullanıcı silme ve yeni kullanıcı ekleme işlemi yapılabilmektedir. Bu sayfayı yalnızca ADMIN rolüne sahip kullanıcılar görebilir ve kullanabilir. Yeni kullanıcı oluşturulurken girilen paralola UserControllerda hashlenerek veri tabanına bu şekilde kaydedilmektedir.

♦️Hakkımızda Sayfası


Teşekkürler, Bol Kodlu Günler😎