@ -28,6 +28,8 @@ import java.io.IOException;
import java.security.Principal ;
import javax.security.auth.Subject ;
import net.yacy.data.UserDB.AccessRight ;
import net.yacy.data.UserDB.Entry ;
import net.yacy.search.Switchboard ;
import net.yacy.search.SwitchboardConstants ;
@ -44,9 +46,11 @@ public class YaCyLoginService extends MappedLoginService {
@Override
protected UserIdentity loadUser ( String username ) {
/*if(username.equals("admin"))*/ {
// TODO: implement legacy credentials
final Switchboard sb = Switchboard . getSwitchboard ( ) ;
String adminuser = sb . getConfig ( "adminAccount" , "admin" ) ;
if ( username . equals ( adminuser ) ) {
final String adminAccountBase64MD5 = sb . getConfig ( SwitchboardConstants . ADMIN_ACCOUNT_B64MD5 , "" ) ;
// in YaCy the credential hash is composed of username:pwd so the username is needed to create valid credential
// not just the password (as usually in Jetty). As the accountname for the std. adminuser is not stored a useridentity
@ -61,9 +65,27 @@ public class YaCyLoginService extends MappedLoginService {
subject . getPrivateCredentials ( ) . add ( credential ) ;
subject . setReadOnly ( ) ;
IdentityService is = getIdentityService ( ) ;
return is . newUserIdentity ( subject , userPrincipal , new String [ ] { "admin" } ) ;
return is . newUserIdentity ( subject , userPrincipal , new String [ ] { AccessRight . ADMIN_RIGHT . toString ( ) } ) ;
} else { // get user data from UserDB
Entry user = sb . userDB . getEntry ( username ) ;
if ( user ! = null ) {
String [ ] role ;
if ( user . hasRight ( AccessRight . ADMIN_RIGHT ) ) {
role = new String [ ] { AccessRight . ADMIN_RIGHT . toString ( ) } ;
Credential credential = YaCyLegacyCredential . getCredentials ( username , user . getMD5EncodedUserPwd ( ) ) ;
Principal userPrincipal = new MappedLoginService . KnownUser ( username , credential ) ;
Subject subject = new Subject ( ) ;
subject . getPrincipals ( ) . add ( userPrincipal ) ;
subject . getPrivateCredentials ( ) . add ( credential ) ;
subject . setReadOnly ( ) ;
IdentityService is = getIdentityService ( ) ;
return is . newUserIdentity ( subject , userPrincipal , role ) ;
}
}
}
// return null;
return null ;
}
@Override