Daha önceden yapmaya calıstıgımız algoritma clientteki giriş login mekanizmasını providera taşıyarak, kullanıcıların login işlemlerinde providera yönlendiirlmesiydi
1.Durum: Providerın ana menusunde alt uygulama iconu olduğunda buna tıklayarak alt programa loginsiz girmesi. yani çift yönlü logi/ logout kontrolu
Çözüm 1:
provider da ana sayfaya link koyalım ve 3000 portunda calısan programa gitsin:
<%= link_to "http://localhost:3000/" do %>
<p> Alt program</p>
<%end%>
3000 portunda çalışan alt programa gelelim:
rootla set adılen açılış sayfasının kontrollarına:
class HomeController < ActionController::Base
def index
if current_user==nil
redirect_to user_omniauth_authorize_path(:doorkeeper)
end
end
end
Böylece programn nerden ve nasıl açılırsa acılsın giriş yapan kullanıcı olmadığı takdirde providerdan girişe zorlanacak
2. Durum: Herhangi bir alt program yada providerdan cıkıs yapıldığında, bağlı tum alt programlardan ve providerdan otomatik cıkış yapılması
Çözüm 2: Provider ve tum alt uygulamalarda:
-alt uygulamalrda:
controller/user/session_controller.rb
def destroy
super
session[:user_id] = nil
session[:access_token] = nil
cookies.clear(:domain => :all)
end
-providerda
controller/user/session_controller.rb
def destroy
super
cookies.clear(:domain => :all)
end
rootes.rb
devise_for :users, :controllers => {sessions: 'user/sessions', :omniauth_callbacks => "omniauth_callbacks" }
initializers/session_store
Rails.application.config. session_store :cookie_store, key: '_uygulamaA_session', :domain => :all
Rails.application.config.
3. Durum: sisteme yeni kullanıcı eklendiğinde alt programa tıklayarak gitmek istediğinde aşağıdaki ekran geliyor. bunu arka planda doğrulamasını yapmak:
Çözüm 3: config/initializsers/doorkeper.rb
skip_authorization do
true
end
4.Durum: Client tarafında oturum açma eylemi devise ile sağlanmıyorsa, bağlantı için paravan bir user modelş oluşturup oturum açma eyleminin omnioauth callbacke gelmesini sağlayın. burda gerekli controlleri yaptıktan sonra ;
session[:admin_id] = @admin.id
komutu ile oturum açtırabilirsiniz. Client tarafında Admin modeli üzerinden oturum açtırılmış fakat kullanılan yapı devise değil. @admin providerdan gelen oturum açan kişi.