gritano 0.9.4 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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: