Add session & user management in the backend

This commit is contained in:
hannah.dagemark 2025-05-09 14:56:30 +02:00 committed by Hannah Dagemark
commit 372fe53947
12 changed files with 88 additions and 11 deletions

View file

@ -1,4 +1,14 @@
class ApplicationController < ActionController::Base
# Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has.
allow_browser versions: :modern
def logged_in?
if session[:user_id] then true else false end
end
def current_user
if logged_in?
session[:user_id]
end
end
end

View file

@ -0,0 +1,21 @@
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by(email: params[:email])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to root_path, notice: "Logged in!"
else
flash.now[:alert] = "Invalid email or password"
render :new, status: :unprocessable_entity
end
end
def destroy
session[:user_id] = nil
redirect_to root_path
end
end

View file

@ -0,0 +1,16 @@
class UsersController < ApplicationController
def new
end
def create
end
def edit
end
def update
end
def destroy
end
end

3
app/models/user.rb Normal file
View file

@ -0,0 +1,3 @@
class User < ApplicationRecord
has_secure_password
end

View file

@ -0,0 +1,2 @@
<h1>Sessions#destroy</h1>
<p>Find me in app/views/sessions/destroy.html.erb</p>

View file

@ -0,0 +1,2 @@
<h1>Sessions#new</h1>
<p>Find me in app/views/sessions/new.html.erb</p>

View file

@ -0,0 +1,2 @@
<h1>Users#create</h1>
<p>Find me in app/views/users/create.html.erb</p>

View file

@ -0,0 +1,2 @@
<h1>Users#new</h1>
<p>Find me in app/views/users/new.html.erb</p>

View file

@ -1,12 +1,12 @@
Rails.application.routes.draw do
resources :users, only: [ :new, :create, :edit, :update, :destroy ]
resource :sessions, only: [ :new, :create, :destroy ]
namespace :test do
resources :images
get "images/index"
get "images/new"
get "images/create"
get "images/show"
resources :images, only: [ :index, :create ]
end
resources :notes
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
# Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
@ -18,5 +18,5 @@ Rails.application.routes.draw do
# get "service-worker" => "rails/pwa#service_worker", as: :pwa_service_worker
# Defines the root path route ("/")
# root "posts#index"
root "images#index"
end

View file

@ -0,0 +1,12 @@
class CreateUsers < ActiveRecord::Migration[8.0]
def change
create_table :users do |t|
t.string :name
t.string :status
t.string :email
t.string :password_digest
t.timestamps
end
end
end

View file

@ -0,0 +1,5 @@
class DropNotesTable < ActiveRecord::Migration[8.0]
def change
drop_table :notes
end
end

10
db/schema.rb generated
View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[8.0].define(version: 2025_05_07_082751) do
ActiveRecord::Schema[8.0].define(version: 2025_05_08_131043) do
create_table "active_storage_attachments", force: :cascade do |t|
t.string "name", null: false
t.string "record_type", null: false
@ -45,9 +45,11 @@ ActiveRecord::Schema[8.0].define(version: 2025_05_07_082751) do
t.datetime "updated_at", null: false
end
create_table "notes", force: :cascade do |t|
t.string "title"
t.text "body"
create_table "users", force: :cascade do |t|
t.string "name"
t.string "status"
t.string "email"
t.string "password_digest"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end