mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 09:41:40 -05:00
Allow admins to create users with password and update user password
This commit is contained in:
parent
bae84d19d9
commit
4048f4dac6
4 changed files with 40 additions and 9 deletions
|
|
@ -25,13 +25,12 @@ class Settings::UsersController < ApplicationController
|
||||||
def create
|
def create
|
||||||
@user = User.new(
|
@user = User.new(
|
||||||
email: user_params[:email],
|
email: user_params[:email],
|
||||||
password: 'password',
|
password: user_params[:password],
|
||||||
password_confirmation: 'password'
|
password_confirmation: user_params[:password]
|
||||||
)
|
)
|
||||||
|
|
||||||
if @user.save
|
if @user.save
|
||||||
redirect_to settings_users_url,
|
redirect_to settings_users_url, notice: 'User was successfully created'
|
||||||
notice: "User was successfully created, email is #{@user.email}, password is \"password\"."
|
|
||||||
else
|
else
|
||||||
redirect_to settings_users_url, notice: 'User could not be created.', status: :unprocessable_entity
|
redirect_to settings_users_url, notice: 'User could not be created.', status: :unprocessable_entity
|
||||||
end
|
end
|
||||||
|
|
@ -50,6 +49,6 @@ class Settings::UsersController < ApplicationController
|
||||||
private
|
private
|
||||||
|
|
||||||
def user_params
|
def user_params
|
||||||
params.require(:user).permit(:email)
|
params.require(:user).permit(:email, :password)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,12 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= f.email_field :email, value: @user.email, class: "input input-bordered" %>
|
<%= f.email_field :email, value: @user.email, class: "input input-bordered" %>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-control">
|
||||||
|
<%= f.label :password do %>
|
||||||
|
Password
|
||||||
|
<% end %>
|
||||||
|
<%= f.password_field :password, autofocus: true, autocomplete: "new-password", class: "input input-bordered" %>
|
||||||
|
</div>
|
||||||
<div class="form-control mt-5">
|
<div class="form-control mt-5">
|
||||||
<%= f.submit "Update", class: "btn btn-primary" %>
|
<%= f.submit "Update", class: "btn btn-primary" %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,12 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= f.email_field :email, value: '', class: "input input-bordered" %>
|
<%= f.email_field :email, value: '', class: "input input-bordered" %>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-control">
|
||||||
|
<%= f.label :password do %>
|
||||||
|
Password
|
||||||
|
<% end %>
|
||||||
|
<%= f.password_field :password, autofocus: true, autocomplete: "new-password", class: "input input-bordered" %>
|
||||||
|
</div>
|
||||||
<div class="form-control mt-5">
|
<div class="form-control mt-5">
|
||||||
<%= f.submit "Create", class: "btn btn-primary" %>
|
<%= f.submit "Create", class: "btn btn-primary" %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe '/settings/users', type: :request do
|
RSpec.describe '/settings/users', type: :request do
|
||||||
let(:valid_attributes) { { email: 'user@domain.com' } }
|
let(:valid_attributes) { { email: 'user@domain.com', password: '4815162342' } }
|
||||||
|
let!(:admin) { create(:user, :admin) }
|
||||||
|
|
||||||
context 'when user is not authenticated' do
|
context 'when user is not authenticated' do
|
||||||
it 'redirects to sign in page' do
|
it 'redirects to sign in page' do
|
||||||
|
|
@ -25,8 +26,6 @@ RSpec.describe '/settings/users', type: :request do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when user is an admin' do
|
context 'when user is an admin' do
|
||||||
let!(:admin) { create(:user, :admin) }
|
|
||||||
|
|
||||||
describe 'POST /create' do
|
describe 'POST /create' do
|
||||||
before { sign_in admin }
|
before { sign_in admin }
|
||||||
|
|
||||||
|
|
@ -35,13 +34,16 @@ RSpec.describe '/settings/users', type: :request do
|
||||||
expect do
|
expect do
|
||||||
post settings_users_url, params: { user: valid_attributes }
|
post settings_users_url, params: { user: valid_attributes }
|
||||||
end.to change(User, :count).by(1)
|
end.to change(User, :count).by(1)
|
||||||
|
|
||||||
|
expect(User.last.email).to eq(valid_attributes[:email])
|
||||||
|
expect(User.last.valid_password?(valid_attributes[:password])).to be_truthy
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'redirects to the created settings_user' do
|
it 'redirects to the created settings_user' do
|
||||||
post settings_users_url, params: { user: valid_attributes }
|
post settings_users_url, params: { user: valid_attributes }
|
||||||
|
|
||||||
expect(response).to redirect_to(settings_users_url)
|
expect(response).to redirect_to(settings_users_url)
|
||||||
expect(flash[:notice]).to eq("User was successfully created, email is #{valid_attributes[:email]}, password is \"password\".")
|
expect(flash[:notice]).to eq('User was successfully created')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -61,6 +63,24 @@ RSpec.describe '/settings/users', type: :request do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'PATCH /update' do
|
||||||
|
let(:user) { create(:user) }
|
||||||
|
|
||||||
|
before { sign_in admin }
|
||||||
|
|
||||||
|
context 'with valid parameters' do
|
||||||
|
let(:new_attributes) { { email: FFaker::Internet.email, password: '4815162342' } }
|
||||||
|
|
||||||
|
it 'updates the requested user' do
|
||||||
|
patch settings_user_url(user), params: { user: new_attributes }
|
||||||
|
|
||||||
|
user.reload
|
||||||
|
expect(user.email).to eq(new_attributes[:email])
|
||||||
|
expect(user.valid_password?(new_attributes[:password])).to be_truthy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue