alfa 0.0.6.pre → 0.0.7.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/dummy/project/db/main/migrations/20000000000000_users.rb +29 -0
- data/dummy/project/db/main/models/user.rb +11 -0
- data/lib/alfa/application.rb +2 -1
- data/lib/alfa/user.rb +3 -3
- data/lib/alfa/wrapper.rb +4 -2
- data/version.rb +1 -1
- metadata +24 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 135f4d850e0a5f9d909bfbd6fcf716c08c44619a
|
4
|
+
data.tar.gz: 1c49574ec9d31e98d33622304694c3d0935ff9d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d6dba8c6f5f3970313d9f222630f38675554f9164287c33a97957ab713da7fac5c72a4fb29dae0341ea38f577bc6ad3867ca249eabec973cde54a62ee25f1c4
|
7
|
+
data.tar.gz: 17786702229e4212107ec51232513f04d9726c7d945999b422bb65704a06e7c2372f0d221388cc103a5a03cfb8247f00127c07f0dba89ecffaeecf4db47eb7ab
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Migration 20000000000000
|
2
|
+
# Don't rename this file after implement migration
|
3
|
+
|
4
|
+
Sequel.migration do
|
5
|
+
up do
|
6
|
+
# Put up migration code here
|
7
|
+
# Use Sequel migration syntax (http://sequel.jeremyevans.net/rdoc/files/doc/schema_modification_rdoc.html) or native SQL (run "SQL command")
|
8
|
+
create_table :users do
|
9
|
+
primary_key :id
|
10
|
+
column :login, String, null: false
|
11
|
+
column :salt, String, fixed: true, size: 10, null: false
|
12
|
+
column :passhash, String, fixed: true, size: 60, null: false
|
13
|
+
column :groups, String, text: true
|
14
|
+
column :email, String
|
15
|
+
column :first_name, String, size: 100
|
16
|
+
column :last_name, String, size: 100
|
17
|
+
column :created_at, DateTime
|
18
|
+
column :updated_at, DateTime
|
19
|
+
unique :login
|
20
|
+
unique :email
|
21
|
+
end
|
22
|
+
User.set_dataset :users
|
23
|
+
end
|
24
|
+
|
25
|
+
down do
|
26
|
+
# Put down migration code here
|
27
|
+
drop_table :users
|
28
|
+
end
|
29
|
+
end
|
data/lib/alfa/application.rb
CHANGED
@@ -2,6 +2,7 @@ require 'alfa/logger'
|
|
2
2
|
require 'alfa/config'
|
3
3
|
require 'alfa/exceptions'
|
4
4
|
require 'alfa/user'
|
5
|
+
require 'bcrypt'
|
5
6
|
|
6
7
|
Encoding.default_external = 'utf-8'
|
7
8
|
Encoding.default_internal = 'utf-8'
|
@@ -64,7 +65,7 @@ module Alfa
|
|
64
65
|
unless User.first(:login=>login)
|
65
66
|
@logger.portion do |l|
|
66
67
|
salt = SecureRandom.hex(5)
|
67
|
-
passhash =
|
68
|
+
passhash = BCrypt::Password.create("#{salt}#{password}")
|
68
69
|
User.create(:login=>login, :salt=>salt, :passhash=>passhash)
|
69
70
|
l.info("created new user login=#{login}, password=***, salt=#{salt}, passhash=#{passhash}")
|
70
71
|
end
|
data/lib/alfa/user.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require 'digest/md5'
|
2
1
|
require 'securerandom'
|
2
|
+
require 'bcrypt'
|
3
3
|
|
4
4
|
module Alfa
|
5
5
|
class << self
|
@@ -84,11 +84,11 @@ module Alfa
|
|
84
84
|
module UserModule
|
85
85
|
def password=(p)
|
86
86
|
self.salt = SecureRandom.hex(5)
|
87
|
-
self.passhash =
|
87
|
+
self.passhash = BCrypt::Password.create("#{self.salt}#{p}")
|
88
88
|
end
|
89
89
|
|
90
90
|
def password_valid?(p)
|
91
|
-
self.passhash ==
|
91
|
+
BCrypt::Password.new(self.passhash) == "#{self.salt}#{p}"
|
92
92
|
end
|
93
93
|
|
94
94
|
def groups=(g)
|
data/lib/alfa/wrapper.rb
CHANGED
@@ -53,7 +53,8 @@ module Alfa
|
|
53
53
|
# Return current user
|
54
54
|
def user
|
55
55
|
@user ||= (
|
56
|
-
|
56
|
+
u = ::User.first(id: @request.session[:user_id])
|
57
|
+
if @request.session[:user_id] && u && @request.session[:passhash] == u[:passhash]
|
57
58
|
Alfa::User.new(u)
|
58
59
|
else
|
59
60
|
GuestUser
|
@@ -79,9 +80,10 @@ module Alfa
|
|
79
80
|
def try_login(login, password)
|
80
81
|
u = @application.config[:db][:main][:instance][:users].first(login: login)
|
81
82
|
raise "No such login: #{login}" unless u
|
82
|
-
if u[:passhash] ==
|
83
|
+
if BCrypt::Password.new(u[:passhash]) == "#{u[:salt]}#{password}"
|
83
84
|
# success
|
84
85
|
session[:user_id] = u[:id]
|
86
|
+
session[:passhash] = u[:passhash]
|
85
87
|
return true
|
86
88
|
else
|
87
89
|
# fail
|
data/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ALFA_VERSION = '0.0.
|
1
|
+
ALFA_VERSION = '0.0.7.pre'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alfa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Valentin Syrovatskiy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rvm
|
@@ -172,6 +172,26 @@ dependencies:
|
|
172
172
|
- - '='
|
173
173
|
- !ruby/object:Gem::Version
|
174
174
|
version: 0.3.1
|
175
|
+
- !ruby/object:Gem::Dependency
|
176
|
+
name: bcrypt
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - "~>"
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '3.1'
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: 3.1.7
|
185
|
+
type: :runtime
|
186
|
+
prerelease: false
|
187
|
+
version_requirements: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - "~>"
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '3.1'
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 3.1.7
|
175
195
|
description: ''
|
176
196
|
email: vsyrovat@gmail.com
|
177
197
|
executables:
|
@@ -427,7 +447,9 @@ files:
|
|
427
447
|
- dummy/project/config/setup_load_paths.rb
|
428
448
|
- dummy/project/config/web_application.rb
|
429
449
|
- dummy/project/db/main/migrations/.keep
|
450
|
+
- dummy/project/db/main/migrations/20000000000000_users.rb
|
430
451
|
- dummy/project/db/main/models/.keep
|
452
|
+
- dummy/project/db/main/models/user.rb
|
431
453
|
- dummy/project/db/main/schema.yml
|
432
454
|
- dummy/project/db/main/schema/.keep
|
433
455
|
- dummy/project/db/main/seed.rb
|