Hi Daniel,

On Fri, Nov 28, 2008 at 03:39:55PM +0100, Daniel Boekhoff wrote:
> 
> ich will eine kleine Anwendung erstellen auf der ich Bilder hochladen  
> kann, die dann
> für jeden User(Freunde) einsehbar sind, der einen Zugang hat.
> Wie kann ich sicherstellen, dass nur die Leute, die registriert sind,  
> die Bilder einsehen
> können. Wenn ich die Bilder beim Upload in den public Folder speichere  
> kriege ich die
> ja nicht gescheit geschützt. Die Bilder in der Datenbank speichern  
> wollte ich nicht so gern.

Wozu ein Plugin? Das kannst du direkt selbst hinprogrammieren.

Ich habe etwas ähnliches in einer Bewerbenfunktion, bei der Bilder
mit hochgeladen werden können. Die soll sonst auch niemand sehen.

Im Model "bewerben" habe ich dazu image_column wie folgt umdefiniert:
image_column :bild1, :store_dir => proc{|record, file| 
"../../pictures/#{record.id}/"}

Dadurch wird pro Datensatz im Rails-Root ein Unterverzeichnis unter 
/pictures angelegt. Da es nicht unterhalb von public ist, kann dort
kein Zugriff stattfinden.

Dann gibt es die Funktion zum Ausliefern des Bilds:

class Admin::BewerbenController < ApplicationController
  layout 'admin'
  before_filter :login_required

  [...]

  def bild
    bewerben = Bewerben.find(params[:id])
    filename = "pictures/" + params[:id].to_s + "/" + bewerben.bild1.filename

    send_file(filename, :type => File.mime_type?(filename), :disposition => 
'inline')
  end
end

Das Bild wird über Rails ausgeliefert durch einen Controller, der eine
Anmeldung vorher erfordert. Der Mime-Type wird mittels diesem Plugin 
http://code.google.com/p/mimetype-fu/ ermittelt.

Wenn das ganze hochperformant sein soll, kann man an der Geschwindigkeit
sicher noch optimieren. Aber das ist bei mir nicht der Fall gewesen und
klingt bei dir auch nicht unbedingt danach, oder?

Jan


-- 
Jan Theofel                   Mail: [EMAIL PROTECTED]
ETES GmbH                     Fon : +49 (7 11) 48 90 83 - 17
Gablenberger Hauptstrasse 32  Fax : +49 (7 11) 48 90 83 - 50
D-70186 Stuttgart             Web : http://www.etes.de/

Registergericht: Amtsgericht Stuttgart HRB 721182
Geschäftsführende Gesellschafter: Markus Espenhain und Jan Theofel
Sitz der Gesellschaft: Stuttgart
USt.-Id.Nr.: DE814767446 

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an