Class: UsersController

Inherits:
ApplicationController show all
Defined in:
app/controllers/users_controller.rb

Overview

This class defines the API methods related to user management

Instance Method Summary (collapse)

Instance Method Details

- (Object) check_email

Checks email availability

Return values:

  • Email available: 200 OK => true

  • Email unavailable: 409 CONFLICT => false

POST Params:

  • user:

    • email: user's email address (string, matching: /A@[a-zd-.].+z/i, length: <= 255)

Query URLs:

  • POST /users/new/check_email



154
155
156
157
# File 'app/controllers/users_controller.rb', line 154

def check_email
  user = User.find_by_email(params[:user][:email])
  user_exist_check user
end

- (Object) check_login

Checks login availability

Return values:

  • Login available: 200 OK => true

  • Login unavailable: 409 CONFLICT => false

POST Params:

  • user:

    • login: desired login (string, matching: /w+|/, length: <= 25 )

Query URLs:

  • POST /users/new/check_login



171
172
173
174
# File 'app/controllers/users_controller.rb', line 171

def 
  user = User.(params[:user][:login])
  user_exist_check user
end

- (Object) create

Creates a new User

Return values:

  • On success: 201 CREATED => user

  • On failure: 422 UNPROCESSABLE ENTITY => false (bad parameters)

URL params:

  • <format>: Output format wanted

POST params:

  • user:

    • login: desired login (string, matching: /w+|/, length: <= 25 )

    • first_name: user's first name (string, length: <= 50)

    • last_name: user's last name (string, length: <= 50)

    • email: user's email address (string, matching: /A@[a-zd-.].+z/i, length: <= 255)

    • birthdate:

      • year: user's year of birth (integer)

      • month: user's month of birth (integer)

      • day: user's day of birth (integer)

  • auth_token: time-based token generated (string, length == 8)

Query URLs:

  • POST /users

  • POST /users.<format>



76
77
78
79
80
81
82
# File 'app/controllers/users_controller.rb', line 76

def create
  user = User.new_with_params params
  success = user.save
  @response.body =  success ? [user, user.personal_key] : user.errors
  @response.status = success ? :created : :unprocessable_entity
  respond
end

- (Object) destroy

Deletes user's record

Restricted to: authenticated user, admin

Return values:

  • On success: 200 OK => true

  • On failure: 404 NOT FOUND => false (no such user)

URL params:

  • <login>: User's login

  • <format>: Output format wanted

DELETE params:

  • auth_token: time-based token generated (string, length == 8)

Query URLs:

  • DELETE /users/<login>

  • DELETE /users/<login>.<format>



132
133
134
135
136
137
138
# File 'app/controllers/users_controller.rb', line 132

def destroy
  success = !@user.nil?
  @user.destroy if success
  @response.body = success ? true : false
  @response.status = success ? :ok : :not_found
  respond
end

- (Object) index

Returns all users

Restricted to: admin

URL params:

  • <format>: Output format wanted

Query URLs:

  • GET /users

  • GET /users.<format>

ToDo:

  • Restrict, and probably expect arguments to return a smaller set of users



20
21
22
23
24
25
# File 'app/controllers/users_controller.rb', line 20

def index
  @users = User.all
  @response.status = :ok
  @response.body = @users
  respond
end

- (Object) show

Gets user with login <login>

Restricted to: authenticated user, admin

Return values:

  • On success: 200 OK => user

  • On failure: 404 NOT FOUND => false (no such user)

URL params:

  • <login>: User's login

  • <format>: Output format wanted

GET params:

  • auth_token: time-based token generated (string, length == 8)

Query URLs:

  • GET /users/<login>

  • GET /users/<login>.<format>



45
46
47
48
49
50
# File 'app/controllers/users_controller.rb', line 45

def show
  success = !@user.nil?
  @response.body = success ? @user : false
  @response.status = success ? :ok : :not_found
  respond
end

- (Object) update

Updates user information according to params

Restricted to: authenticated user, admin

Return values:

  • On success: 200 OK => user

  • On failure:

    • 422 UNPROCESSABLE ENTITY => false (bad parameters)

    • 404 NOT FOUND => false (no such user)

URL params:

  • <format>: Output format wanted

PUT Params:

  • user:

    • first_name: user's first name (string, length: <= 50)

    • last_name: user's last name (string, length: <= 50)

    • email: user's email address (string, matching: /A@[a-zd-.].+z/i, length: <= 255)

  • auth_token: time-based token generated (string, length == 8)

Query URLs:

  • PUT /users/<login>

  • PUT /users/<login>.<format>



107
108
109
110
111
112
# File 'app/controllers/users_controller.rb', line 107

def update
  success = @user.update_attributes(params[:user])
  @response.body = success ? @user : @user.errors
  @response.status = success ? :ok : :unprocessable_entity
  respond
end