/*
* This software is released under the GNU Lesser General Public License v3.
* For more information see http://www.gnu.org/licenses/lgpl.html
*
* Copyright (c) 2011, Peter Knego & Matjaz Tercelj
* All rights reserved.
*/
package com.leanengine;
import java.util.Map;
public class LeanAccount {
private Long id;
private String nickName;
private String providerId;
private String provider;
private Map<String, Object> providerProperties;
protected LeanAccount(Long id, String nickName, String providerId, String provider, Map<String, Object> providerProperties) {
this.id = id;
this.nickName = nickName;
this.providerId = providerId;
this.provider = provider;
this.providerProperties = providerProperties;
}
/**
* Logs user out of server. Current authentication tokens are removed on server and on client.
*
* @return Returns true if user was logged in and was logged out successfully.
* @throws LeanException
*/
public static Boolean logout() throws LeanException {
return RestService.getInstance().logout();
}
/**
* Logs user out of server. Current authentication tokens are removed on server and on client.
* Runs on the background thread.
*
* @param callback Callback to be invoked when logout finishes.
* @throws LeanException
*/
public static void logoutInBackground(NetworkCallback<Boolean> callback) {
RestService.getInstance().logoutAsync(callback);
}
/**
* Checks if user is logged in.
*
* @return Returns true if user is logged in, false otherwise.
*/
public static boolean isUserLoggedIn() {
return LeanEngine.getAuthToken() != null;
}
/**
* Gets current user account.
*
* @return LeanAccount of the currently logged-in user.
* @throws LeanException
*/
public static LeanAccount getAccountData() throws LeanException {
return RestService.getInstance().getCurrentAccountData();
}
/**
* Returns the internal Id of the account. Account Id is server generated and is unique per account.
*
* @return Id of the account.
*/
public Long getId() {
return id;
}
/**
* User ID as provided by authentication provider. Ids are guaranteed to be unique within provider,
* but not across different providers.
* @return User ID generated by authentication provider.
*/
public String getProviderId() {
return providerId;
}
/**
* Returns the identification string of authentication provider that authenticated this account.
* <br/><br/>
* Identification string may contain only provider unique string, e.g. {@code 'fb-oauth'} for Facebook,
* or it might contain full URL including user identification, e.g.
* {@code 'https://www.google.com/accounts/o8/id?id=user_id_hash'} in case of Google OpenID.
*
* @return Provider authentication string.
*/
public String getProvider() {
return provider;
}
/**
* Nickname of the user represented by this account. Format is provider dependent.
* Some providers use email as nick name.
* @return Nickname.
*/
public String getNickName() {
return nickName;
}
/**
* Returns provider-dependent map of user properties.
* This may contain data such as gender, first name, last name, etc..
* @return Map of properties.
*/
public Map<String, Object> getProviderProperties() {
return providerProperties;
}
}