Skip to content

Commit

Permalink
updating user data and deleting user
Browse files Browse the repository at this point in the history
  • Loading branch information
lackac committed Apr 29, 2010
1 parent 0f6cb6d commit 20ec1fc
Show file tree
Hide file tree
Showing 6 changed files with 135 additions and 25 deletions.
91 changes: 75 additions & 16 deletions app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

require 'sequel'
DB = Sequel.sqlite("app.db")
Sequel::Model.strict_param_setting = false
require 'user'

require 'helpers'
Expand All @@ -15,32 +16,30 @@
end

# RESTful konvenciók
# GET /users => összes user
# GET /users/new => új user form
# GET /users/42 => 42 id-jű user oldala
# POST /users => létrehoz usert
# GET /users/42/edit => 42-es user szerkesztése
# PUT /users/42 => módosítja a 42-es usert
# DELETE /users/42 => törli a 42-es usert
# GET /users => összes user
# GET /users/new => új user form
# GET /users/42 => 42 id-jű user oldala
# POST /users => létrehoz usert
# GET /users/42/edit => 42-es user szerkesztése
# PUT /users/42 => módosítja a 42-es usert
# GET /users/42/delete => 42-es user törlésének megerősítése
# DELETE /users/42 => törli a 42-es usert

get "/users/?" do
require_user
@users = User.all
erb :"users/index"
end

get "/users/:id" do
if @user = User[params[:id]]
erb :"users/show"
get "/users/new" do
unless logged_in?
@user = User.new(params[:user] || {})
erb :"users/new"
else
pass
redirect "/users/#{current_user.id}"
end
end

get "/users/new" do
@user = User.new(params[:user] || {})
erb :"users/new"
end

post "/users" do
begin
@user = User.new(params[:user] || {})
Expand All @@ -54,6 +53,66 @@
end
end

get "/users/:id" do
require_user
not_found unless @user = User[params[:id]]
erb :"users/show"
end

get "/users/:id/edit" do
require_user
not_found unless @user = User[params[:id]]
if @user == current_user
erb :"users/edit"
else
session[:error] = "Csak a saját adataidat szerkesztheted!"
redirect "/users/#{@user.id}"
end
end

put "/users/:id" do
require_user
not_found unless @user = User[params[:id]]
if @user == current_user
begin
@user.update_except(params[:user], :login)
session[:notice] = "Sikeres módosítás!"
redirect "/users/#{@user.id}"
rescue
session[:error] = "Hiba az űrlapban"
erb :"users/edit"
end
else
session[:error] = "Csak a saját adataidat szerkesztheted!"
redirect "/users/#{@user.id}"
end
end

get "/users/:id/delete" do
require_user
not_found unless @user = User[params[:id]]
if @user == current_user
erb :"users/delete"
else
session[:error] = "Mit gondolsz, csak úgy kitörölhetsz akárkit?"
redirect "/users/#{@user.id}"
end
end

delete "/users/:id" do
require_user
not_found unless @user = User[params[:id]]
if @user == current_user
@user.delete
session[:current_user_id] = nil
session[:notice] = "Sikeresen törölted magad!"
redirect "/"
else
session[:error] = "Mit gondolsz, csak úgy kitörölhetsz akárkit?"
redirect "/users/#{@user.id}"
end
end

post "/login" do
if user = User.authenticate(params[:user], params[:pass])
session[:current_user_id] = user.id
Expand Down
7 changes: 7 additions & 0 deletions helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ def current_user
@current_user ||= User[session[:current_user_id]]
end

def require_user
unless logged_in?
session[:error] = "Ehhez előbb be kell jelentkezned..."
redirect "/"
end
end

def form_field(label, object, attribute, type="text")
object_name = object.class.name.downcase
id = "#{object_name}_#{attribute}"
Expand Down
31 changes: 22 additions & 9 deletions user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,30 @@
class User < Sequel::Model
attr_accessor :password, :password_confirmation

set_allowed_columns :login, :password, :password_confirmation,
:first_name, :last_name, :email

def name
unless first_name.empty? and last_name.empty?
"#{first_name} #{last_name}"
end
end

def validate
if login.empty?
errors.add(:login, "nem lehet üres")
elsif User[:login => login]
errors.add(:login, "már van ilyen nevű felhasználó")
end
if password.empty?
errors.add(:password, "nem lehet üres")
if new?
if login.empty?
errors.add(:login, "nem lehet üres")
elsif User[:login => login]
errors.add(:login, "már van ilyen nevű felhasználó")
end
end
if password != password_confirmation
errors.add(:password_confirmation, "nem egyezik a jelszóval")
unless new? or (password.empty? and password_confirmation.empty?)
if password.empty?
errors.add(:password, "nem lehet üres")
end
if password != password_confirmation
errors.add(:password_confirmation, "nem egyezik a jelszóval")
end
end
unless email.empty? or email =~ /[\w\.-]+@([\w-]+\.)+\w+/
errors.add(:email, "nem megfelelő formátum")
Expand All @@ -31,6 +38,12 @@ def before_create
self.password_hash = Digest::SHA1.hexdigest(password)
end

def before_update
unless password.empty?
self.password_hash = Digest::SHA1.hexdigest(password)
end
end

def self.authenticate(login, password)
User[:login => login, :password_hash => Digest::SHA1.hexdigest(password)]
end
Expand Down
10 changes: 10 additions & 0 deletions views/users/delete.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<h2>Saját regisztráció törlése</h2>

<form action="/users/<%= @user.id %>" method="post">
<p><input type="hidden" name="_method" value="delete"/></p>
<p class="error">Biztos törölni akarod a regisztrációd?</p>
<p>
<input type="submit" value="Igen"/>, vagy
<a href="/users/<%= @user.id %>">inkább mégsem</a>
</p>
</form>
14 changes: 14 additions & 0 deletions views/users/edit.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<h2>Saját adatok szerkesztése</h2>

<form action="/users/<%= @user.id %>" method="post">
<p><input type="hidden" name="_method" value="put"/></p>
<p><strong>Felhasználónév:</strong> <%= @user.login %></p>
<%= form_field "Jelszó", @user, :password, :password %>
<%= form_field "Jelszó még egyszer", @user, :password_confirmation, :password %>
<%= form_field "Email", @user, :email %>
<%= form_field "Keresztnév", @user, :first_name %>
<%= form_field "Vezetéknév", @user, :last_name %>
<p><input type="submit" value="Mehet"/></p>
</form>

<p><a href="/users/<%= @user.id %>">vissza</a></p>
7 changes: 7 additions & 0 deletions views/users/show.erb
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,10 @@
<dd><%= @user.email %></dd>
<% end %>
</dl>

<% if @user == current_user %>
<p>
<a href="/users/<%= @user.id %>/edit">szerkesztés</a> |
<a href="/users/<%= @user.id %>/delete">törlés</a>
</p>
<% end %>

0 comments on commit 20ec1fc

Please sign in to comment.