Skip to content

Instantly share code, notes, and snippets.

@hozaka
Created September 12, 2012 07:21

Revisions

  1. hozaka created this gist Sep 12, 2012.
    53 changes: 53 additions & 0 deletions gistfile1.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,53 @@
    # Client side should check the activation status of current account.
    # If not you should popup an input dialog for the user to enter their activation code.
    #
    # CLIENT SIDE CODE SAMPLE

    def login(user_id, password)
    user = User.validate_login_from_server(user_id, password)
    if user.nil?
    # provided user_id or password is incorrect.
    # show an error message on client
    show_message("invalide username or password")
    else
    if user.activated? == true
    # user account is already activated
    # show the character selector screen
    show_character_selector_screen
    else
    # user account is not activated
    # show a input dialog on client screen for the user to enter their activation code
    show_activation_code_dialog("please enter your activation code")
    end
    end
    end

    # Server side should save the activation status of each account.
    # If user's account is not activated and an activation code is provided, you should valid the activation code first and then update the status
    #
    # SERVER SIDE CODE SAMPLE

    def login(user_id, password, activation_code = nil)
    user = DB.User.validate_login(user_id, password) # validate the user id & password from database
    if user.nil?
    return false # invalid user_id or password, login failed and return the error message to client
    else
    if user.activated? == true
    return true # user_id & password is matched, and account is already activated before, login succeed
    else
    # user account is not activated, you should check the activation code first
    code = DB.ActivationCode.check(activation_code)
    if code && code.used? == false
    DB.start_transaction do
    code.update_attribute(:used, true)
    code.save
    user.update_attribute(:activated, true)
    user.save
    end # update user's status and save to database, then login success
    return true
    else
    return false
    end
    end
    end
    end