gritano 0.9.4 → 0.10.0

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.
data/Gemfile CHANGED
@@ -8,6 +8,7 @@ gem 'sqlite3', ">= 1.3.6"
8
8
  gem 'grit', ">= 2.5.0"
9
9
  gem 'terminal-table', ">= 1.4.5"
10
10
  gem "sshd_config"
11
+ gem 'bcrypt-ruby'
11
12
 
12
13
  # Add dependencies to develop your gem here.
13
14
  # Include everything needed to run rake, tests, features, etc.
data/Gemfile.lock CHANGED
@@ -13,6 +13,7 @@ GEM
13
13
  i18n (~> 0.6)
14
14
  multi_json (~> 1.0)
15
15
  arel (3.0.2)
16
+ bcrypt-ruby (3.0.1)
16
17
  builder (3.0.4)
17
18
  cucumber (1.2.1)
18
19
  builder (>= 2.1.2)
@@ -63,6 +64,7 @@ PLATFORMS
63
64
 
64
65
  DEPENDENCIES
65
66
  activerecord (>= 3.2.8)
67
+ bcrypt-ruby
66
68
  bundler (>= 1.0)
67
69
  cucumber (>= 1.2.1)
68
70
  database_cleaner (>= 0.8.0)
data/TODO CHANGED
@@ -1,10 +1,9 @@
1
- v0.10.0:
1
+ v0.11.0:
2
2
  ☐ permitir/barrar acesso remoto ao terminal do administrador
3
3
 
4
- v0.11.0:
4
+ v0.12.0:
5
5
  ☐ novos tipos de permissão
6
6
 
7
7
  futuro:
8
8
  ☐ divulgar
9
- ☐ interface gráfica via web
10
- ☐ git via https
9
+ ☐ interface gráfica via web
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.4
1
+ 0.10.0
@@ -0,0 +1,10 @@
1
+ class AddPasswordToUsers < ActiveRecord::Migration
2
+ def up
3
+ add_column :users, :crypted_password, :string, :default => nil
4
+ end
5
+
6
+ def down
7
+ remove_column :users, :crypted_password
8
+ end
9
+ end
10
+
@@ -14,6 +14,7 @@
14
14
  gritano user:key:list username
15
15
  gritano user:repo:list username
16
16
  gritano user:add username [email admin]*
17
+ gritano user:password:set username
17
18
  gritano user:rm username
18
19
  gritano user:email:update username email@server.com
19
20
  gritano user:email:get username
@@ -14,6 +14,7 @@
14
14
  ssh git@host.com admin:user:key:list username
15
15
  ssh git@host.com admin:user:repo:list username
16
16
  ssh git@host.com admin:user:add username [email admin]*
17
+ ssh git@host.com admin:user:password:set username
17
18
  ssh git@host.com admin:user:rm username
18
19
  ssh git@host.com admin:user:email:update username email@server.com
19
20
  ssh git@host.com admin:user:email:get username
@@ -14,6 +14,7 @@
14
14
  ssh git@host.com admin:user:key:list username
15
15
  ssh git@host.com admin:user:repo:list username
16
16
  ssh git@host.com admin:user:add username [email admin]*
17
+ ssh git@host.com admin:user:password:set username
17
18
  ssh git@host.com admin:user:rm username
18
19
  ssh git@host.com admin:user:email:update username email@server.com
19
20
  ssh git@host.com admin:user:email:get username
data/gritano.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "gritano"
8
- s.version = "0.9.4"
8
+ s.version = "0.10.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Igor Bonadio"]
12
- s.date = "2013-04-18"
12
+ s.date = "2013-05-02"
13
13
  s.description = "Gritano is the simplest way to configure your git server over ssh. You can create repositories and manage user access."
14
14
  s.email = "igorbonadio@gmail.com"
15
15
  s.executables = ["gritano", "gritano-pub-key", "gritano-remote"]
@@ -40,6 +40,7 @@ Gem::Specification.new do |s|
40
40
  "db/migrate/004_create_keys.rb",
41
41
  "db/migrate/005_add_admin_to_users.rb",
42
42
  "db/migrate/006_add_email_to_users.rb",
43
+ "db/migrate/007_add_password_to_users.rb",
43
44
  "features/data/config_true.yml",
44
45
  "features/data/local_commands/addon_list.txt",
45
46
  "features/data/local_commands/addon_ssh_install.txt",
@@ -282,6 +283,7 @@ Gem::Specification.new do |s|
282
283
  s.add_runtime_dependency(%q<grit>, [">= 2.5.0"])
283
284
  s.add_runtime_dependency(%q<terminal-table>, [">= 1.4.5"])
284
285
  s.add_runtime_dependency(%q<sshd_config>, [">= 0"])
286
+ s.add_runtime_dependency(%q<bcrypt-ruby>, [">= 0"])
285
287
  s.add_development_dependency(%q<rspec>, [">= 2.11.0"])
286
288
  s.add_development_dependency(%q<rdoc>, [">= 3.12"])
287
289
  s.add_development_dependency(%q<cucumber>, [">= 1.2.1"])
@@ -295,6 +297,7 @@ Gem::Specification.new do |s|
295
297
  s.add_dependency(%q<grit>, [">= 2.5.0"])
296
298
  s.add_dependency(%q<terminal-table>, [">= 1.4.5"])
297
299
  s.add_dependency(%q<sshd_config>, [">= 0"])
300
+ s.add_dependency(%q<bcrypt-ruby>, [">= 0"])
298
301
  s.add_dependency(%q<rspec>, [">= 2.11.0"])
299
302
  s.add_dependency(%q<rdoc>, [">= 3.12"])
300
303
  s.add_dependency(%q<cucumber>, [">= 1.2.1"])
@@ -309,6 +312,7 @@ Gem::Specification.new do |s|
309
312
  s.add_dependency(%q<grit>, [">= 2.5.0"])
310
313
  s.add_dependency(%q<terminal-table>, [">= 1.4.5"])
311
314
  s.add_dependency(%q<sshd_config>, [">= 0"])
315
+ s.add_dependency(%q<bcrypt-ruby>, [">= 0"])
312
316
  s.add_dependency(%q<rspec>, [">= 2.11.0"])
313
317
  s.add_dependency(%q<rdoc>, [">= 3.12"])
314
318
  s.add_dependency(%q<cucumber>, [">= 1.2.1"])
data/lib/gritano/cli.rb CHANGED
@@ -33,5 +33,26 @@ module Gritano
33
33
  return "invalid"
34
34
  end
35
35
  end
36
+
37
+ def CLI.check_password(login, password, home_dir = Etc.getpwuid.dir, repo_dir = Etc.getpwuid.dir)
38
+ ActiveRecord::Base.establish_connection(YAML::load(File.open(File.join(home_dir, '.gritano', 'database.yml'))))
39
+ user = User.find_by_login(login)
40
+ if user
41
+ return user.password == password
42
+ end
43
+ return false
44
+ end
45
+
46
+ def CLI.check_access(login, repo, access, home_dir = Etc.getpwuid.dir, repo_dir = Etc.getpwuid.dir)
47
+ ActiveRecord::Base.establish_connection(YAML::load(File.open(File.join(home_dir, '.gritano', 'database.yml'))))
48
+ user = User.find_by_login(login)
49
+ if user
50
+ repo = Gritano::Repository.find_by_name(repo)
51
+ if repo
52
+ return user.check_access(repo, access)
53
+ end
54
+ end
55
+ return false
56
+ end
36
57
  end
37
58
  end
@@ -1,4 +1,5 @@
1
1
  require "terminal-table"
2
+ require 'io/console'
2
3
 
3
4
  module Gritano
4
5
  module Console
@@ -84,6 +85,35 @@ module Gritano
84
85
  return [false, "#{user.errors.full_messages.join(", ")}."]
85
86
  end
86
87
 
88
+ add_command "user:password:set", "username" do |argv|
89
+ login, = argv
90
+ user = User.find_by_login(login)
91
+ if user.crypted_password == nil
92
+ puts "You have not set your password yet."
93
+ print "Please, set one now: "
94
+ user.password = @stdin.noecho(&:gets).gsub("\n", "")
95
+ puts
96
+ if user.save
97
+ return [true, "Done!"]
98
+ end
99
+ else
100
+ print "Before you start, enter you current password: "
101
+ if user.password == @stdin.noecho(&:gets).gsub("\n", "")
102
+ puts
103
+ print "Now, enter you new password: "
104
+ user.password = @stdin.noecho(&:gets).gsub("\n", "")
105
+ puts
106
+ if user.save
107
+ return [true, "Done!"]
108
+ end
109
+ else
110
+ puts
111
+ return [false, "Password you entered do not match."]
112
+ end
113
+ end
114
+ return [false, "Password could not be changed."]
115
+ end
116
+
87
117
  add_command "user:rm", "username" do |argv|
88
118
  login, = argv
89
119
  user = User.find_by_login(login)
@@ -1,11 +1,24 @@
1
+ require 'bcrypt'
2
+
1
3
  module Gritano
2
4
  class User < ActiveRecord::Base
5
+ include BCrypt
6
+
3
7
  validates :login, presence: true
4
8
  validates_uniqueness_of :login
5
9
 
6
10
  has_many :permissions
7
11
  has_many :repositories, through: :permissions
8
12
  has_many :keys
13
+
14
+ def password
15
+ @password ||= Password.new(crypted_password)
16
+ end
17
+
18
+ def password=(new_password)
19
+ @password = Password.create(new_password)
20
+ self.crypted_password = @password
21
+ end
9
22
 
10
23
  def add_access(repo, access)
11
24
  change_access(repo, "add", access)
@@ -92,5 +92,15 @@ module Gritano
92
92
  user.add_access(repo, :write).should be_true
93
93
  user.check_access(repo, :write).should be_true
94
94
  end
95
+
96
+ it "can have a password" do
97
+ user = User.create(login: 'user', password: '123')
98
+ user.should be_valid
99
+ end
100
+
101
+ it "can if a password is valid" do
102
+ user = User.create(login: 'user', password: '123')
103
+ user.password.should be == '123'
104
+ end
95
105
  end
96
106
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gritano
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.10.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-18 00:00:00.000000000 Z
12
+ date: 2013-05-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -91,6 +91,22 @@ dependencies:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: bcrypt-ruby
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
94
110
  - !ruby/object:Gem::Dependency
95
111
  name: rspec
96
112
  requirement: !ruby/object:Gem::Requirement
@@ -237,6 +253,7 @@ files:
237
253
  - db/migrate/004_create_keys.rb
238
254
  - db/migrate/005_add_admin_to_users.rb
239
255
  - db/migrate/006_add_email_to_users.rb
256
+ - db/migrate/007_add_password_to_users.rb
240
257
  - features/data/config_true.yml
241
258
  - features/data/local_commands/addon_list.txt
242
259
  - features/data/local_commands/addon_ssh_install.txt
@@ -479,7 +496,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
479
496
  version: '0'
480
497
  segments:
481
498
  - 0
482
- hash: -3505922859375147179
499
+ hash: -1458194907486604045
483
500
  required_rubygems_version: !ruby/object:Gem::Requirement
484
501
  none: false
485
502
  requirements: