pretzel-accounts 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e0bcdb72fb89da03f71cccf833ace7fbead92b98
4
- data.tar.gz: 2ae6de4c66da367677f0030c018c9f080c670921
3
+ metadata.gz: 71378d588daa8eb2b325b6b8c51a62a91c68b478
4
+ data.tar.gz: 5d85e3a1c9dab252dbb7444ae41e5587f35d5406
5
5
  SHA512:
6
- metadata.gz: 1f458e7c66b8ec09a1d85f33391785a088928543f06ec997adf513aa8656d00cb66e8a9f434827c6541cb6c3aba4dc8869959a247f633f8e66f23d7be2621638
7
- data.tar.gz: 2ce71ff44b19f27710984372f0f8909cd34e054a25f1a550c3ad501fab16fbe2f7a13362e3b4c8496e27412442378f7fece2726e06fb2fa356902ea1971064fc
6
+ metadata.gz: 4f4a2f5998f8698e746acbf8e0915a82cb0f8dd0eb8eeb234a8b1b78c1288a1468b6dd2990539f56cd8ba0296b517bc18bfd0dda09a2460e3f790fc5b0b4c6aa
7
+ data.tar.gz: ddf238a6cd57659547be8cab4552b4d609130384b7261c5dce52409201b8ed921966e19e64304891083b3cea5eb8d5501e75458e3be10655aaf34413da63532a
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,30 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ pretzel-accounts (0.1.0)
5
+ bcrypt (~> 3.1)
6
+ pretzel-orm (~> 0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ bcrypt (3.1.10)
12
+ liquid (3.0.1)
13
+ minitest (5.5.1)
14
+ pretzel-orm (0.1.0)
15
+ liquid (~> 3.0)
16
+ sequel (~> 4)
17
+ sqlite3 (~> 1.3)
18
+ rack (1.6.0)
19
+ rack-test (0.6.3)
20
+ rack (>= 1.0)
21
+ sequel (4.20.0)
22
+ sqlite3 (1.3.10)
23
+
24
+ PLATFORMS
25
+ ruby
26
+
27
+ DEPENDENCIES
28
+ minitest (~> 5.5)
29
+ pretzel-accounts!
30
+ rack-test (~> 0.6)
@@ -0,0 +1,54 @@
1
+ require "pretzel/orm"
2
+ require "bcrypt"
3
+
4
+ module Pretzel
5
+ module Accounts
6
+
7
+ begin
8
+ connection = Pretzel::ORM.all_connections[0] # Grab the first initialized connection.
9
+ connection.create_table? :pretzel_users do
10
+ primary_key :id
11
+ string :name
12
+ string :email
13
+ string :salt
14
+ string :password
15
+
16
+ unique :name
17
+ end
18
+
19
+ class User < Pretzel::ORM::Model
20
+ set_dataset :pretzel_users # Set table name
21
+ exposes :id, :name, :email # Expose attributes to Liquid
22
+
23
+ def before_create
24
+ self.salt = BCrypt::Engine.generate_salt # Make salt
25
+ self.password = BCrypt::Engine.hash_secret(self.password, self.salt) # Hash password
26
+ end
27
+
28
+ def authenticate?(password)
29
+ if self.password == BCrypt::Engine.hash_secret(password, self.salt)
30
+ true
31
+ else
32
+ false
33
+ end
34
+ end
35
+ end
36
+ rescue Sequel::Error
37
+ puts "ERROR: Establish a database connection BEFORE requiring pretzel-accounts."
38
+ end
39
+
40
+ module Route
41
+ def self.included(application)
42
+ end
43
+
44
+ def requires_authentication
45
+ halt 401 unless !!session[:user]
46
+ end
47
+
48
+ def login(user)
49
+ session[:user] = user[:id]
50
+ end
51
+ end
52
+
53
+ end
54
+ end
data/pretzel.gemspec ADDED
@@ -0,0 +1,22 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "pretzel-accounts"
3
+ s.version = "0.1.1"
4
+ s.licenses = "MIT"
5
+ s.summary = "An accounts system for the Pretzel development suite"
6
+ s.description = "An accounts system for the Pretzel development suite"
7
+ s.authors = ["Richard Blechinger"]
8
+ s.email = ["richard@blechi.at"]
9
+ s.homepage = "http://github.com/pretzelhands/accounts"
10
+
11
+ s.required_ruby_version = ">= 2.0.0"
12
+
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ s.require_paths = ["lib"]
16
+
17
+ s.add_runtime_dependency("pretzel-orm", "~> 0")
18
+ s.add_runtime_dependency("bcrypt", "~> 3.1")
19
+
20
+ s.add_development_dependency("rack-test", "~> 0.6")
21
+ s.add_development_dependency("minitest", "~> 5.5")
22
+ end
@@ -0,0 +1,3 @@
1
+ pretzel_dir = File.dirname(File.dirname(__FILE__)) + '/lib'
2
+ $LOAD_PATH.unshift pretzel_dir unless $LOAD_PATH.include?(pretzel_dir)
3
+
data/test/scrap.db ADDED
Binary file
data/test/scrap.rb ADDED
@@ -0,0 +1,49 @@
1
+ require_relative "environment"
2
+
3
+ require "pretzel/core"
4
+ require "pretzel/orm"
5
+ Database = Pretzel::ORM::Database.sqlite("scrap.db")
6
+
7
+ require "pretzel/ext/templating"
8
+ require "pretzel/ext/accounts"
9
+
10
+ Database.alter_table :pretzel_users do
11
+ add_column :role, :string
12
+ end
13
+
14
+ class CustomUser < Pretzel::Accounts::User
15
+ set_dataset :pretzel_users
16
+ exposes :name, :password, :role
17
+ end
18
+
19
+ user = CustomUser.create(
20
+ :name => "Richard",
21
+ :password => "something",
22
+ :role => "Admin"
23
+ )
24
+
25
+ class Application < Pretzel::Core
26
+ extends Pretzel::Extension::Templating
27
+ extends Pretzel::Accounts
28
+ end
29
+
30
+ Application.get "/login" do
31
+ if user.authenticate? "something"
32
+ login user
33
+ end
34
+ end
35
+
36
+ Application.error 401 do
37
+ render :auth_error
38
+ end
39
+
40
+
41
+ Application.get "/" do
42
+ requires_authentication
43
+ render :index, {
44
+ "something" => "Test!",
45
+ "current_user" => CustomUser.find(:id => session[:user])
46
+ }
47
+ end
48
+
49
+ Rack::Handler::Thin.run Application.new
@@ -0,0 +1 @@
1
+ <h1>Who are you? And what are you doing here?</h1>
@@ -0,0 +1,3 @@
1
+ {% if current_user %}
2
+ <h1>There's a user: {{ current_user.name }} who's an {{ current_user.role }}</h1>
3
+ {% endif %}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pretzel-accounts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Blechinger
@@ -74,7 +74,16 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
+ - Gemfile
78
+ - Gemfile.lock
77
79
  - LICENSE
80
+ - lib/pretzel/ext/accounts.rb
81
+ - pretzel.gemspec
82
+ - test/environment.rb
83
+ - test/scrap.db
84
+ - test/scrap.rb
85
+ - test/views/auth_error.liquid
86
+ - test/views/index.liquid
78
87
  homepage: http://github.com/pretzelhands/accounts
79
88
  licenses:
80
89
  - MIT
@@ -99,4 +108,9 @@ rubygems_version: 2.2.2
99
108
  signing_key:
100
109
  specification_version: 4
101
110
  summary: An accounts system for the Pretzel development suite
102
- test_files: []
111
+ test_files:
112
+ - test/environment.rb
113
+ - test/scrap.db
114
+ - test/scrap.rb
115
+ - test/views/auth_error.liquid
116
+ - test/views/index.liquid