Add dotenv - Protect my secret data in .env file

This commit is contained in:
Benjamin Myara 2018-08-29 14:53:39 +01:00
parent dfb53b89b0
commit 6dee298b44
18 changed files with 240 additions and 2 deletions

1
.gitignore vendored
View File

@ -13,3 +13,4 @@ node_modules
yarn-error.log
.byebug_history
.env*
.env*

View File

@ -28,4 +28,5 @@ group :development, :test do
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
gem 'dotenv-rails'
gem 'dotenv-rails', groups: [:development, :test]
end

View File

@ -19,3 +19,4 @@ body {
background-color: $background;
}
@import "devise/index";
@import "users/index";

View File

@ -0,0 +1,33 @@
.profile-container {
margin: 0 1in;
display: flex;
justify-content: space-between;
align-items: center;
height: calc(100vh - 4.5em); // 4.5em is height of navbar
form {
flex-grow: 1;
.description {
width: 100%;
height: 5em;
}
}
.profile-pic {
display: flex;
flex-direction: column;
align-items: center;
margin-left: 3em;
img {
max-width: 50vw;
}
}
}
.profile-form {
display: grid;
grid-template-columns: 1fr 1fr;
color: white;
}

View File

@ -0,0 +1,2 @@
@import "show";
@import "edit";

View File

@ -0,0 +1,51 @@
.user-container {
margin: 0 1in;
height: calc(100vh - 4.5em); //4.5em is height of navbar.
display:flex;
flex-direction: column;
justify-content: center;
h2 {
font-size: 1.5em;
}
.profile {
background: #33333D;
display: flex;
.flex-end {
margin-left: auto;
display:flex;
align-items: center;
a:first-child {
margin-right: .5em;
}
}
.profile-pic {
display: flex;
align-items: center;
margin-right: 3em;
img {
width: 10em;
}
}
.profile-text {
display: flex;
flex-direction: column;
justify-content: center;
h1 {
margin: 0 0 .5em 0 ;
}
h2 {
margin: 0;
}
.italics {
font-style: italic;
color: white;
}
}
}
}

View File

@ -0,0 +1,39 @@
class UsersController < ApplicationController
before_action :find_user, only: [:edit, :update, :show, :destroy]
def edit; end
def update
@user.update(user_params)
redirect_to user_edit_path(@user)
end
def create
# Untested Code
user = User.new(user_params)
authorize user # I don't know where to put this TODO: Test this method
if user.save
redirect_to user_path(user)
else
raise
end
end
def show; end
def destroy
@user.destroy
redirect_to root_path
end
private
def find_user
@user = User.find(params[:id])
#authorize @user
end
def user_params
params.require(:user).permit(:email, :first_name, :last_name, :description, :photo)
end
end

View File

@ -1,4 +1,5 @@
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,

View File

@ -9,7 +9,24 @@
<div><%= link_to "Settings", "#" %></div>
</div>
<div class="profile">
<%= image_tag "https://avatars2.githubusercontent.com/u/38472180?v=4", class: "img-circle"%>
<% if current_user.nil? %>
<%= link_to "Login", new_user_session_path %>
<% else %>
<div class="dropdown">
<div data-toggle="dropdown">
<% if current_user&.photo.nil? %>
<img src="https://upload.wikimedia.org/wikipedia/commons/8/89/Portrait_Placeholder.png" class="avatar dropdown-toggle img-circle">
<% else %>
<%#= cl_image_tag current_user.photo, class: "avatar dropdown-toggle img-circle"%>
<% end %>
</div>
<ul class="dropdown-menu dropdown-menu-right">
<!-- <li><a href="#">Profile</a></li> -->
<li><%= link_to "Profile", user_path(current_user) %></li>
<li><%= link_to "Logout", destroy_user_session_path %></li>
</ul>
</div>
<% end %>
</div>
</div>
</div>

View File

@ -0,0 +1,32 @@
<div class="profile-container">
<%= simple_form_for(@user) do |t| %>
<div class="profile-form">
<div>
<%= t.input :email %>
<%= t.input :first_name %>
<%= t.input :last_name %>
<%= t.input :photo %>
<%= t.input :password %>
<%= t.submit :Save, class: "btn btn-primary save-btn form-control" %>
<p></p>
<%= link_to "View my profile", user_path(@user), class: "btn btn-primary save-btn form-control" %>
</div>
<div class="profile-pic">
<% if @user.photo.nil? %>
<%= image_tag "https://upload.wikimedia.org/wikipedia/commons/8/89/Portrait_Placeholder.png"%>
<% else %>
<%= cl_image_tag current_user.photo%>
<% end %>
<%= t.input_field :photo, onchange: 'this.form.submit();' %>
<%= t.input_field :photo, as: :hidden %>
</div>
</div>
<% end %>
</div>

View File

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

View File

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

View File

@ -0,0 +1,26 @@
<div class="user-container">
<div class="profile">
<div class="profile-pic">
<% if @user&.photo&.url.nil? %>
<%= image_tag "https://upload.wikimedia.org/wikipedia/commons/8/89/Portrait_Placeholder.png", class: "img-circle"%>
<% else %>
<%= cl_image_tag @user.photo, class: "img-circle"%>
<% end %>
</div>
<div class="profile-text">
<h1><%= @user.first_name %> <%= @user.last_name %></h1>
<h2 class="italics" ><%= @user.email %></h2>
</div>
<div class="flex-end">
<%= link_to "Edit Information", user_edit_path(@user), class: "btn btn-primary" %>
<%= link_to "Delete Account", user_path(@user), class: "btn btn-danger", method: :delete, data: {
confirm: "Are you sure?"
} %>
</div>
</div>

View File

@ -21,4 +21,10 @@ Rails.application.routes.draw do
mount ActionCable.server, at: '/cable'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
get '/home', to: 'pages#home'
get '/users/:id', to: 'users#show', as: :user
get '/users/:id/edit', to: 'users#edit', as: :user_edit
patch '/users/:id', to: 'users#update'
delete '/users/:id', to: 'users#destroy'
end

View File

@ -0,0 +1,7 @@
class AddFirstNameToUsers < ActiveRecord::Migration[5.2]
def change
add_column :users, :first_name, :string
add_column :users, :last_name, :string
add_column :users, :photo, :string
end
end

View File

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2018_08_27_151325) do
ActiveRecord::Schema.define(version: 2018_08_29_105638) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -30,6 +30,9 @@ ActiveRecord::Schema.define(version: 2018_08_27_151325) do
t.datetime "remember_created_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "first_name"
t.string "last_name"
t.string "photo"
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end

View File

@ -0,0 +1,7 @@
require 'test_helper'
class UserControllerTest < ActionDispatch::IntegrationTest
# test "the truth" do
# assert true
# end
end

View File

@ -0,0 +1,7 @@
require 'test_helper'
class UsersControllerTest < ActionDispatch::IntegrationTest
# test "the truth" do
# assert true
# end
end