session.rb 1.34 KB
module API

  class Session < Grape::API

    # Login to get token
    #
    # Parameters:
    #   login (*required) - user login or email
    #   password (required) - user password
    #
    # Example Request:
    #  POST http://localhost:3000/api/v1/login?login=adminuser&password=admin
    post "/login" do
      user ||= User.authenticate(params[:login], params[:password], environment)

      return unauthorized! unless user
      user.generate_private_token!
      present user, :with => Entities::UserLogin
    end

    # Create user.
    #
    # Parameters:
    #   email (required)                  - Email
    #   password (required)               - Password
    #   login                             - login
    # Example Request:
    #   POST /register?email=some@mail.com&password=pas&login=some
    params do
      requires :email, type: String, desc: _("Email")
      requires :login, type: String, desc: _("Login")
      requires :password, type: String, desc: _("Password")
    end
    post "/register" do
      unique_attributes! User, [:email, :login]
      attrs = attributes_for_keys [:email, :login, :password]
      attrs[:password_confirmation] = attrs[:password]
      user = User.new(attrs)
      if user.save
        user.activate
        present user, :with => Entities::User
      else
        something_wrong!
      end
    end

  end
end