2016-11-19 4 views
-1

Ich versuche die grundlegende http-Authentifizierung für Gollum zu konfigurieren, aber ich möchte, dass der angemeldete Benutzername für den Git-Commit verwendet wird.Wie konfiguriere ich Gollum-Wiki um die Basis-Authentifizierung zu erlauben und den Benutzernamen für den Git-Commit zu verwenden?

Ich habe config.ru modifiziert, so dass die Standardauthentifizierung funktioniert, jetzt heraus, ich muss nur Figur, wie ich das Äquivalent dies erreichen können:

session['gollum.author'] => "%s" % loggedIn 

Dann kann ich entfernen Sie die „John Smith“ string .

BTW - Verzeihen Sie die dämliche Frage, ich habe Ruby nie zuvor berührt und es ist spät.

#!/usr/bin/env ruby 
#-------------------------------------------------------------------- 
# - example custom rack for the Gollum wiki engine 
# - file should be placed in wiki root 
# - RACK_APP environment variable should be set to the filename 
# - entrypoint.sh script will run this app using: 
# $ rackup $RACK_APP -p 4567 
#-------------------------------------------------------------------- 
require 'rubygems' 
require 'gollum/app' 

gollum_path = File.expand_path(File.dirname(__FILE__)) 
wiki_options = { 
    :live_preview => false, 
    :allow_editing => true, 
    :allow_uploads => true, 
    :universal_toc => false, 
} 

users = {'user' => 'password'} 
loggedIn = "anonymous" 

use Rack::Auth::Basic, 'realm' do |username, password| 
    users.key?(username) && users[username] == password 
    loggedIn = username 
end 

Precious::App.set(:gollum_path, gollum_path) 
Precious::App.set(:default_markup, :markdown) 
Precious::App.set(:wiki_options, wiki_options) 
run Precious::App 

#set author 
class Precious::App 
    before do 
     session['gollum.author'] = { 
      :name => "%s" % "john smith", # => "%s" % loggedIn 
      :email => "[email protected]", 
     } 
    end 
end 

So kann ich sehen, dass Sitzung nur innerhalb des Wertvollen Klasse-Namespace vorhanden ist, so kann ich es nicht direkt von meiner Authentifizierungsmethode festgelegt:

use Rack::Auth::Basic, 'realm' do |username, password| 
    users.key?(username) && users[username] == password 
    session['gollum.author'] = { 
     :name => "%s" % "john smith", # => "%s" % username 
     :email => "[email protected]", 
    } 
end 

ich auch versucht:

use Rack::Auth::Basic, 'realm' do |username, password| 
    users.key?(username) && users[username] == password 
    loggedIn = { 
     :name => "%s" % username, 
     :email => "[email protected]", 
    } 
end 

Precious::App.set(:session['gollum.author'], loggedIn) 
+0

Der Titel ist über Rails, aber Ihre Frage hat nichts über Rails. 'RubyonRails! = Ruby' –

+0

Ihre Frage ist unklar. Im Titel werden Sie nach globalen Variablen gefragt, in dem Sie nach lokalen Variablen fragen. Welches ist es? –

+0

Wie fast alle Programmiersprachen erlaubt Ruby Bibliotheken auch nicht, die Kernsprachensemantik wie den Variablenbereich zu ändern. Daher ist es sehr unwahrscheinlich, dass Ihre Frage in irgendeiner Weise mit [tag: rack] oder [tag: gollum- Wiki]. –

Antwort

1

Hier ist eine Lösung, die es Ihnen ermöglicht, eine Reihe von Benutzern zu definieren, ermöglicht grundlegende HTTP-Authentifizierung und verwendet den Benutzernamen für die Fit-Commits.

require 'rubygems' 
require 'gollum/app' 

gollum_path = File.expand_path(File.dirname(__FILE__)) 
wiki_options = { 
    :live_preview => false, 
    :allow_editing => true, 
    :allow_uploads => true, 
    :universal_toc => false, 
} 

users = {'user' => 'password', 
     'user2' => 'password2'} 

use Rack::Auth::Basic, 'realm' do |username, password| 
    if users.key?(username) && users[username] == password 
     Precious::App.set(:loggedInUser, username) 
    end 
end 

Precious::App.set(:gollum_path, gollum_path) 
Precious::App.set(:default_markup, :markdown) 
Precious::App.set(:wiki_options, wiki_options) 
run Precious::App 

#set author 
class Precious::App 
    before do 
     session['gollum.author'] = { 
      :name => "%s" % settings.loggedInUser, 
      :email => "%[email protected]" % settings.loggedInUser, 
     } 
    end 
end 
Verwandte Themen