Im currently working on an custom login/register extension.
Code: Select all
import com.smartfoxserver.v2.components.login.LoginAssistantComponent;
import com.smartfoxserver.v2.components.signup.SignUpAssistantComponent;
import com.smartfoxserver.v2.core.SFSEventType;
import com.smartfoxserver.v2.extensions.SFSExtension;
public class SignUpExtension
extends SFSExtension
{
private SignUpAssistantComponent suac;
private LoginAssistantComponent lac;
public void init()
{
addRequestHandler("register", UserRegistrationHandler.class);
addEventHandler(SFSEventType.USER_LOGIN, LoginEventHandler.class);
}
public void destroy()
{
super.destroy();
}
}
public class LoginEventHandler
extends BaseServerEventHandler
{
public void handleServerEvent(ISFSEvent event)
throws SFSException
{
String userName = (String)event.getParameter(SFSEventParam.LOGIN_NAME);
String cryptedPass = (String)event.getParameter(SFSEventParam.LOGIN_PASSWORD);
ISession session = (ISession)event.getParameter(SFSEventParam.SESSION);
IDBManager dbManager = getParentExtension().getParentZone().getDBManager();
try
{
Connection connection = dbManager.getConnection();
PreparedStatement stmt = connection.prepareStatement("SELECT Username, Password FROM players where Username='" + userName + "'");
ResultSet res = stmt.executeQuery();
if (!res.first())
{
SFSErrorData errData = new SFSErrorData(SFSErrorCode.LOGIN_BAD_USERNAME);
errData.addParameter(userName);
throw new SFSLoginException("<LoginEventHandler : Bad user name: " + userName, errData);
}
String dbPword = res.getString("Password");
if (!getApi().checkSecurePassword(session, dbPword, cryptedPass))
{
SFSErrorData data = new SFSErrorData(SFSErrorCode.LOGIN_BAD_PASSWORD);
data.addParameter(userName);
throw new SFSLoginException("<LoginEventHandler : Login failed for user: " + userName, data);
}
}
catch (SQLException e)
{
SFSErrorData errData = new SFSErrorData(SFSErrorCode.GENERIC_ERROR);
errData.addParameter("<LoginEventHandler : SQL Error: " + e.getMessage());
throw new SFSLoginException("<LoginEventHandler : A SQL Error occurred: " + e.getMessage(), errData);
}
Connection connection;
}
}
public class UserRegistrationHandler
extends BaseClientRequestHandler
{
public void handleClientRequest(User user, ISFSObject params)
{
String name = params.getUtfString("Username");
String password = params.getUtfString("Password");
String email = params.getUtfString("Email");
IDBManager dbManager = getParentExtension().getParentZone().getDBManager();
String sql = "INSERT into login(Username, Password, Email) values ('" + name + "','" + password + "','" + email + "')";
try
{
dbManager.executeUpdate(sql);
}
catch (SQLException e)
{
ISFSObject error = new SFSObject();
error.putUtfString("error", "MySQL updation failed");
send("register", error, user);
}
ISFSObject success = new SFSObject();
success.putUtfString("success", "User successfully registered");
send("register", success, user);
}
}
And normally those methods should be called by my unity script :
Code: Select all
private void LoginHandler() {
if (task == "register")
{
sfs.Send(new LoginRequest("", "", "Registration"));
Debug.Log("<Server : Registration Executet>");
}
else if (task == "login")
{
sfs.Send(new LoginRequest(UserName, Password, "ParallelOriginWorld"));
Debug.Log("<Server : Login Executet>");
}
}
private void OnLogin(BaseEvent e)
{
if (task == "register")
{
ISFSObject isfsobject = new SFSObject();
isfsobject.PutUtfString("Username", UserName);
isfsobject.PutUtfString("Password", Password);
isfsobject.PutUtfString("Email", Email);
sfs.Send(new ExtensionRequest("register", isfsobject));
}
else if (task == "login")
{
Debug.Log("<Server : Login Sucessfull>");
}
}
But this isnt the case. Any ideas why the extension methods arent called and why theres no callbacks ?