Giter Site home page Giter Site logo

maxjustus / sinatra-authentication Goto Github PK

View Code? Open in Web Editor NEW
476.0 19.0 94.0 636 KB

A sinatra extension wrapped in a gem that implements authentication/permissions with users stored in the database. Now with optional support for facebook connect

License: The Unlicense

Ruby 99.09% Shell 0.91%

sinatra-authentication's Issues

jquery example.

could you make an example for using mongoid and ajax for the login?

Problems with sinatra-authentication after rubygems upgrade...

I just upgraded ruby gems today and now my sinatra application won't start. It fails while loading the sinatra-authentication gem. Is there something that I can do to fix this?

Thanks in advance,

Abhas.

/usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems.rb:1090:in `escape': can't convert Pathname to String (TypeError)
    from /usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems.rb:1090:in `block in loaded_path?'
    from /usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems.rb:1089:in `each'
    from /usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems.rb:1089:in `find'
    from /usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems.rb:1089:in `loaded_path?'
    from /usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `block in require'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `block in load_dependency'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/sinatra-authentication-0.4.1/lib/sinatra-authentication.rb:3:in `<top (required)>'
    from /usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:57:in `require'
    from /usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:57:in `rescue in require'
    from /usr/local/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `block in require'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `block in load_dependency'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
    from index.rb:13:in `<main>'

settings

Should move to 'settings', as 'options' is being deprecated (Sinatra::Base)

User class confusion

I'm using sinatra-authentication with Mongo Mapper, but the method_missing way of accessing the underlying Mongo class isn't quite enough for accessing some of MM's features eg:

class MmUser
  many :addresses
end

class Address
  key :street, String
end

# This works
p current_user.addresses

# This doesn't
current_user.addresses << Address.new(:street => 'mine')
current_user.save

Is there a way to access the underlying class? Could the User class be configured to use delegate rather than method_missing?
@huboard:{"order":10.5}

Issues with Mongoid 3?

Hi there,

Been trying to use sinatra-authentication in a very simple test app with mongoid3 and have been running into some odd problems. Probably operator error, but worth mentioning, I thought.

When using mongoid 3, I often get errors like:
ArgumentError at /login
wrong number of arguments (1 for 0)

an easy way to get this is to enter bad credentials into the login screen. Another way to get it is to try to access current_user after a successful login. The same behavior is seen in 3.0.0-3.0.3 but the problems all go away when I switch to mongoid 2.4.12. I am using Ruby 1.9.3

Here is a paste: http://pastebin.com/TzEaWKPa

It looks like one of the problems is in line 14 of mongoid_adapter.rb, which is:
MongoidUser.first(:conditions => hash)

It looks as though the proper usage in Mongoid 3 is
MongoidUser.find(:conditions => hash).first

Flash message marked as 'notice', when it should be 'error'.

I'm not sure why this is happening, as it seems to be correct in the current code here, but the login error "The email or password you entered is incorrect." is being marked as ':notice', instead of ':error' in RackFlash. The content of the Rack::FLash object follows:

'#FlashHash @values={:notice=>"The email or password you entered is incorrect."} @cache={}'

Email is not returned in Callback data

I just create the new app on the FB developer center and tried FB login with this plugin.
The login is working properly, but I can't get email as callback data.
Is there any idea who can solve this?

The DM example and validations are going to be deprecated

Since the latest version of DM, same validations names has change and the ones used in the plugin are deprecated.
Also, the example is not working because, the latest DM has the auto_migrate! method in dm-migrations instead of dm-core.

Missing/Wrong Views?

I am attempting to write a small blogging engine for myself.

I have gotten sinatra, mongoid, and haml all working but when I visit any sinatra-authentication page nginx throws an internal server error.

this is the error I am getting
Errno::ENOENT - No such file or directory - /opt/nginx/html/raptor.patrickarlt.com/views/layout.haml:

you can see all my files here https://gist.github.com/854156

get '/' works confirming Sinatra is working
get '/haml' works confirming haml is working
get '/private' redirects to '/login' confirming sinatra-authentication is working
get '/login' internal server error

Ruby 1.9.2
Nginx 0.8.54
Passenger 3.0.2

Overriding template engine not possible

Hi,

i have designed my sinatra app as a standalone-app and not as a subclass of Sinatra::Application.
However, the setting for overriding the template engine from haml to erb is not working for me.
I have made the setting

configure do
   set :template_engine, :erb
end

and still get the following error:

LoadError at /login
cannot load such file -- haml

No files or directories folder/views/auth/signup.haml

Why does sinatra-authenticatetion not detect my template engine configuration?

require 'sinatra/base'
require 'sinatra/flash'
require "sinatra-authentication"
require 'slim'

class ApplicationController < Sinatra::Base
  #if you want flash messages
  register Sinatra::Flash
  register Sinatra::SinatraAuthentication
  use Rack::Session::Cookie, :secret => "sha1h1fsa23xs1j6g436gew5"
  # => config
  configure do
    set :sinatra_authentication_view_path, Pathname(__FILE__).dirname.expand_path + "../views/auth/"
    set :template_engine, :slim
    set :admin_username, 'frank'
    set :admin_password, 'sinatra'
    set :public_folder, 'public'
    set :views, 'views'
    enable :show_exceptions
  end

Using the database outside of sinatra-authenticate

If I want to build a cron job that works on the same database as your sinatra-authentication has auto-manufactured I can't just require 'sinatra-authentication' and let it take care of everything for me because that requires sinatra.

It would be nice if I could have, say, only the following lines:

require 'mongo_mapper'
require 'sinatra-authentication/models'

in a non-sinatra script (eg. environment.rb), and have the MmUser class prepped with all the same keys as it would in my sinatra app.


Hehe, I got a little carried away testing out how this could be done and made something that works! See what you think: jphastings/sinatra-authentication@ee84251

What license is sinatra-authentication?

May I ask what license sinatra-authentication is released as? I'm considering extending or adding to this project when I have time, but without a license file I'm not sure. (Sorry to be so asinine like that, I just like to stay safe.)

I would assume this project is MIT like most ruby projects?

can't convert DmUser to Array

Hi - sorry can't figure this one out.

I've associated the DmUser class with a customer class (i.e. Users have many Customers) like so:

class DmUser
  has n, :customers
end
class Customer
  include DataMapper::Resource

  property :id,  Serial
  property :name, String

  belongs_to :dm_user
end

When attempting to call the customers with the following in main.rb:

get '/dashboard'
  @customers = current_user.db_instance.customers
  haml :dash
end

and the following line in dash.haml:

- @customers.each {|c| puts c }

I get the error:

TypeError at /dashboard
can't convert DmUser to Array (DmUser#to_ary gives FalseClass)

Any ideas?

current_user not being created

I'm using the latest versions of DM, Sinatra and sinatra-authentication and I am perplexed by a recurrent problem with the current_user object not being created. This causes a server error when I have -if current_user.admin? in my templates (no method 'admin' for nil:nilClass).

When it occurs, the only predictable thing I can do to get my site back running is remove all references to current_user from my templates. The /login and /logout pages still work. The problem seems to go away and come back at will; I haven't yet detected the pattern.

Can anyone think of what might prevent current_user from being created? I am a novice at this so I may be missing something obvious.

Thankyou muchly.

Rack-flash

Rack-flash was not working for me (neither rack-flash3) so I just used sinatra-flash instead.

Users not created

Is there specific version of DataMapper or sqlite / mysql gems needed. I have a problem of new user not being created in database after submitting signup form. I have tested with both MySQL and SQLite. Using the default views for forms. No errors. No anything.

I just can figure out what causes the problem :)

Setting sinatra_authentication_view_path not working

The method to override default views as described here (https://github.com/maxjustus/sinatra-authentication#overriding-default-views) does not seem to be working correctly.

I have the following directory structure...

/app
  /views
    edit.haml
    index.haml
    layout.haml
    login.haml
    show.haml
    signup.haml
  app.rb

...with this line of code in my app.rb file...

set :sinatra_authentication_view_path, Pathname(__FILE__).dirname + "views/"

...and the haml templates in /views are not being used.

Testing authentication

I am struggling with how to test authentication using RSpec 2.0. I can verify that authentication and signup works manually, but in my spec I run in to some problems. I create users in the database, and try to manually assign my create user id to the session variable, like so:

session[:user] = @user.id

I have verified that @user exists and is valid. However, I get the following error:

NameError:
undefined local variable or method `session' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x000001019967c0>

How can I log users in programatically in my tests? I am including my "app.rb" file that includes sinatra-authentication and the rest of my gems, so I don't know why "session" doesn't exist.

@huboard:{"order":10.75}

doesn't work with mongoid > 3.0.0

The mongoid_adapter, in the get(hash) method definition, calls first() with arguments. It looks like the mongoid api has changed in 3.0 and now first doesn't take any argument anymore

New database backend: Treequel

Hi!

I would like to implement a Treequel-based LDAP backend for managing and authenticating users. Any pointers on how I could get started with this? Subsequently, I will send across a pull request for the same.

Cheers, Abhas.

PS. Treequel => https://github.com/ged/treequel

Forgot password

I saw on the roadmap that "forgot password" is on the roadmap, but I'd like to place a vote for bumping it up the line.

Use rack-flash3 instead of rack-flash

There are problems with the latest release of Rack and rack-flash. Rack-Flash3 addresses these issues, but sinatra-authentication does not recognize it as a replacement for rack-flash.

overwrite /signup and create /users/new

I really like this gem and I use it also for my latest project.

Meanwhile I need to deactivate the /signup route and give admin users the possibility to create users. Letting guests create accounts is a security flaw for my application.

What I did was to migrate from a classic app to a modular app, so I was able to overwrite /signup.

But while creating post /users I get stuck:
NoMethodError at /users
undefined method `include?' for nil:NilClass

Can someone help me with the User model?

register Sinatra::SinatraAuthentication # load auth

post '/users' do
@user = User.set(params[:user])
if @user.valid && @user.id
session[:user] = @user.id
if Rack.const_defined?('Flash')
flash[:notice] = "Account created."
end
redirect '/'
else
if Rack.const_defined?('Flash')
flash[:error] = "There were some problems creating the account: #{@user.errors}."
end
redirect '/users/new' + hash_to_query_string(params['user'])
end
end

XSRF / CSRF

There seems to be little or no protection for XSRF / CSRF.

Validation with mongo mapper

I'm using mongo mapper. I'm able to create users, but it's not returning errors when you don't use a unique email or don't enter passwords on signup.

id instead of _id with dm-core

I'm using this authentication system with datamapper over mongo-db.
Signup works but insert a dm-user with two id field:

  • "_id" that contains the identifier of the records
  • "id" which is null.

During a log in, if the user and password are correct, the user is logged in as the user nil, and is consequently staying a guest.

Edit: I fixed my particular problem by overriding the DmUsers class and replacing Serial by the type: ObjectId and by adding "require 'mongo_adapter'" which include the support for that specific mongo type

using sinatra_authentication with padrino

Hi max...I'm trying use your authentication system with padrino, padrino is a nice and simple framework based in sinatra...so...I thought this would works with padrino..but I don't get this work..maybe you can help me or you may say me whats changes must I do...thanks a lot....

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.