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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42b04d75d9c3ed910907e1c46163b85226939122
4
- data.tar.gz: ffbf8a3228d0271f6c8a631ad3f626484c7ec4ba
3
+ metadata.gz: 135f4d850e0a5f9d909bfbd6fcf716c08c44619a
4
+ data.tar.gz: 1c49574ec9d31e98d33622304694c3d0935ff9d5
5
5
  SHA512:
6
- metadata.gz: 0625ca1aba2e5eb757cbd0d613fa4b2712c4c6c130093cf39c43e9b9c21fd8948bfaca6f6a8bbe2d3cc8876dbf8d637afc61f29835eeed22d3bcf309d5737f0f
7
- data.tar.gz: e4195b642f031804e08eca399335b95b48604d7a98d0c64eca640c322f4eb3bf3fada7e3a36a3d81c438bf928a932c077c3413b7e1a6ebe6e58b7cb5de6332cb
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
@@ -0,0 +1,11 @@
1
+ require 'json'
2
+
3
+ class User < Sequel::Model(DB::Main[:users])
4
+ prepend Alfa::UserModule
5
+ plugin :serialization, :json, :groups
6
+
7
+ def before_save
8
+ self.groups ||= []
9
+ super
10
+ end
11
+ end
@@ -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 = Digest::MD5.hexdigest("#{salt}#{password}")
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 = Digest::MD5.hexdigest("#{self.salt}#{p}")
87
+ self.passhash = BCrypt::Password.create("#{self.salt}#{p}")
88
88
  end
89
89
 
90
90
  def password_valid?(p)
91
- self.passhash == Digest::MD5.hexdigest("#{self.salt}#{p}")
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
- if @request.session[:user_id] && (u = ::User.first(id: @request.session[:user_id]))
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] == Digest::MD5.hexdigest("#{u[:salt]}#{password}")
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.6.pre'
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.6.pre
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-19 00:00:00.000000000 Z
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