userapp / widget

UserApp 的 PHP 用户小部件。

0.6.7 2014-08-07 04:15 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:03:30 UTC


README

将 UserApp PHP 客户端封装成一个小巧且用户友好的 API。

入门

查找您的 App Id

如果您还没有 UserApp 账户,您需要创建一个

  • App Id:App Id 识别您的应用。登录后,您应该会立即看到您的 App Id。如果您找不到它,请遵循此指南

加载库

UserApp 依赖于 PHP 的自动加载功能在需要时加载其文件。自动加载遵循 PSR-0 标准,使其与大多数主要框架和库兼容。当使用 Composer 管理依赖项时,应用程序中的自动加载会自动处理。

使用 Composer?将以下内容添加到您的 composer.json

{
	"require": {
		"userapp/widget": "~0.6.3"
	}
}

不使用 Composer?使用库自身的自动加载器

require 'autoload.php';

示例

bootstrap.php

<?php

use \UserApp\Widget\User;

// Import composer autoloader
require_once('vendor/autoload.php');

User::setAppId("YOUR APP ID");

must_authenticate.php

<?php

use \UserApp\Widget\User;

require_once('bootstrap.php');

User::onUnauthorized(function ($sender, $call_context, $error){
    header('Location: /login.php');
    die();
});

login.php

<?php

use \UserApp\Widget\User;

require_once('bootstrap.php');

if($_SERVER['REQUEST_METHOD'] === 'POST'){
    $redirect_to = 'login.php?error=INVALID_CREDENTIALS';

    if(User::login($_POST['username'], $_POST['password'])){
        $redirect_to = 'user/profile.php';
    }

    header('Location: /' . $redirect_to);
    die();
}

?>

<form method="post">
    Username: <input type="text" name="username" /><br />
    Password: <input type="password" name="password" /><br />
	
	<? if(isset($_GET['error']) && $_GET['error'] == 'INVALID_CREDENTIALS'){ ?>
		* Invalid username or password<br />
	<? } ?>

    <input type="submit" value="Log in" />
</form>

user/profile.php

<?php

use \UserApp\Widget\User;

require_once('../must_authenticate.php');

$user = User::current();

?>

User id: <?= $user->user_id ?><br /><br />
Username: <?= ($user->login ?: '(not specified)') ?><br />
First name: <?= ($user->first_name ?: '(not specified)') ?><br />
Last name: <?= ($user->last_name ?: '(not specified)') ?><br />
Email: <?= ($user->email ?: '(not specified)') ?><br />

<a href="logout.php">Logout</a>

user/logout.php

<?php

use \UserApp\Widget\User;

require_once('../must_authenticate.php');

$user = User::current();
$user->logout();

header('Location: ../login.php');

API

登录

bool User::login($username, $password)

使用令牌登录

bool User::loginWithToken($token)

注册新用户

bool User::signup($username, $password, $email = null, $first_name = null, $last_name = null, $auto_login = true)

检查用户是否已认证

bool User::authenticated()

获取当前已认证的用户

User User::current()

示例

$user = User::current();
$user->logout();

读取用户的属性

$user->user_id

$user->properties->age->value

支持的属性

  • 字符串 user_id
  • 字符串 first_name
  • 字符串 last_name
  • 字符串 email
  • 字符串 login
  • 对象属性
  • 对象功能
  • 对象权限
  • 数组 锁定
  • 字符串 ip_address
  • 整数 last_login_at
  • 整数 updated_at
  • 整数 created_at

检查用户是否有权限

bool $user->hasPermission($permission_name)

检查用户是否有功能

bool $user->hasFeature($feature_name)

保存用户更改

void $user->save()

示例

$user->first_name = 'John';
$user->last_name = 'Johnsson';
$user->properties->my_own_property = 'some value';
$user->save();

用户登出

void $user->logout()

未经授权时的回调

void onUnauthorized(closure($sender, $call_context, $error))

示例

User::onUnauthorized(function($sender, $call_context, $error){
    header('Location: /login.php');
    die();
});

许可证

MIT