Bu forumda sorduğum sorular genelde yanıtsız kalıyor saçma sorular mı soruyorum acaba.
Vuex teki sctrict mode, içindeki verinin manipüle edilmesini çok çok zorlaştırıyor. (Hiçbirşey imkansız değil diye düşünüyorum) dolayısıyla kullanıcın erişmesinin zor olduğu bir yerde tutup anlık güncellemeleri de uygulalayabildiğim için ve daha iyi bir fikir çıkmadığı için mevcut kullandığım yöntemin doğru olduğuna karar verdim.
İhtiyacı olan biri olursa;
Api den vue ye login olurken user datası ile birlikte rol ve izinlerini de çekiyorum. Vuex te tutuyorum. Önyüzde erişmesinin yasak olduğu sayfa veya metodları buradan belirleyip izin veriyor yada vermiyorum. Tabii uyanık ve bilgili bir kullanıcı bu duvarı aşarsa api tarafında ikinci bir kontrol tabii ki var.
Çoğu yerde ihtiyaç duyulmaz ama benim müşterim ısrarla istediği için yaptım. Bir kullanıcı login olduktan sonra onun herhangi bir bilgisi değişirse; örneğin görüntülememesi gereken bir sayfadayken bu sayfaya erişimi kapatılırsa o an sayfayı yenilemesine gerek kalmadan yada yeniden login olmasına gerek kalmadan çat diye sayfasını 403 e çevirmek için bu şekilde login olmuş kullanıxıya anlık olayları yaşatmak için şu adımları izledim.
Apideki tüm metodların sonucu return edilmeden önce belirli anlaşılabilir mesaj objeleri oluşturup redis te publish ettim. Redis te publish edilen objeyi bir node js uygulamasında subscribe ederek dinledim. Dinlediğim mesajlardaki objeyi parçaladım ve mantıklı bir ifade olan mesajın hangi rotadan geldiğini, bu konuda hangi kullanıcıların bilgilendirilmesi gerektiğini kimlere işlem yapılacağını ve işlemi anladım. Sonra socket io ile ilgili socketlere mesajı yada işlemi emit ettim. Vue uygulamasında socketi dinlerken eğer uygulamanın açık olduğu sırada ilgili kullanıcı ile ilgili bir durum varsa ne gerekiyorsa yaptım çünkü mesajda uygulamanın ne yapması gerektiğine dair tüm bilgiler var.
İşi biraz uzatmışız gibi görünüyor ama tamamen kendi sunucumuz içinde pusher gibi dışarıdan hizmet almadan çözdük. Nodejs asenkron çalışabildiği için log işlemini de buradan yaptık, mongo db ye loglama yaptık. Böylece api yi de log zahmetinden kurtarmış olduk.
Herkese iyi forumlar.