robe-auth/src/main/java/io/robe/auth/token/TokenAuthenticator.java
@Override
    public Optional<BasicToken> authenticate(String tokenString) throws AuthenticationException {
        tokenString = tokenString.replaceAll("\"", "");
        LOGGER.debug("Authenticating from database:  " + tokenString);
        try {
            // Decode tokenString and get user
            BasicToken token = new BasicToken(tokenString);

            Optional<UserEntry> user = (Optional<UserEntry>) userStore.findByUsername(token.getUsername());
            if (!user.isPresent()) {
                LOGGER.warn("User is not available: " + tokenString);
                return Optional.empty();
            }
            // If user exists and active than check Service Permissions for authorization controls
            if (user.get().isActive()) {

                if (token.getPermissions() == null) {
                    LOGGER.debug("Loading Permissions from DB: " + tokenString);
                    Set<String> permissions = new HashSet<String>();
                    Set<PermissionEntry> rolePermissions = new HashSet<PermissionEntry>();

                    //If user role is a group than add sub role permissions to group

                    Optional<RoleEntry> role = (Optional<RoleEntry>) roleStore.findByRoleId(user.get().getRoleId());

                    getAllRolePermissions(role.get(), rolePermissions);

                    for (PermissionEntry permission : rolePermissions) {
                        if (permission.getType().equals(PermissionEntry.Type.SERVICE)) {
                            Optional<? extends ServiceEntry> service = serviceStore.findByCode(permission.getRestrictedItemId());
                            if (service.isPresent()) {
                                permissions.add(service.get().getPath() + ":" + service.get().getMethod());
                            }
                        }
                    }
                    // Create credentials with user info and permission list
                    token.setPermissions(Collections.unmodifiableSet(permissions));
                } else {
                    LOGGER.debug("Loading Permissions from Cache: " + tokenString);
                }

                return Optional.ofNullable(token);
            }
        } catch (Exception e) {
            LOGGER.error(tokenString, e);
        }
        return Optional.empty();

    }
@Override
    public Optional<BasicToken> authenticate(String tokenString) throws AuthenticationException {
        tokenString = tokenString.replaceAll("\"", "");
        LOGGER.debug("Authenticating from database:  " + tokenString);
        try {
            // Decode tokenString and get user
            BasicToken token = new BasicToken(tokenString);

            Optional<UserEntry> user = (Optional<UserEntry>) userStore.findByUsername(token.getUsername());
            if (!user.isPresent()) {
                LOGGER.warn("User is not available: " + tokenString);
                return Optional.empty();
            }
            // If user exists and active than check Service Permissions for authorization controls
            if (user.get().isActive()) {

                if (token.getPermissions() == null) {
                    LOGGER.debug("Loading Permissions from DB: " + tokenString);
                    Set<String> permissions = new HashSet<String>();
                    Set<PermissionEntry> rolePermissions = new HashSet<PermissionEntry>();

                    //If user role is a group than add sub role permissions to group

                    Optional<RoleEntry> role = (Optional<RoleEntry>) roleStore.findByRoleId(user.get().getRoleId());

                    getAllRolePermissions(role.get(), rolePermissions);

                    for (PermissionEntry permission : rolePermissions) {
                        if (permission.getType().equals(PermissionEntry.Type.SERVICE)) {
                            Optional<? extends ServiceEntry> service = serviceStore.findByCode(permission.getRestrictedItemId());
                            if (service.isPresent()) {
                                permissions.add(service.get().getPath() + ":" + service.get().getMethod());
                            }
                        }
                    }
                    // Create credentials with user info and permission list
                    token.setPermissions(Collections.unmodifiableSet(permissions));
                } else {
                    LOGGER.debug("Loading Permissions from Cache: " + tokenString);
                }

                return Optional.ofNullable(token);
            }
        } catch (Exception e) {
            LOGGER.error(tokenString, e);
        }
        return Optional.empty();

    }
@ Override public Optional < BasicToken > authenticate ( String tokenString ) throws AuthenticationException { tokenString = tokenString . replaceAll ( "\"" , "" ) ; LOGGER . debug ( "Authenticating from database:  " + tokenString ) ; try { // Decode tokenString and get user BasicToken token = new BasicToken ( tokenString ) ; Optional < UserEntry > user = ( Optional < UserEntry > ) userStore . findByUsername ( token . getUsername ( ) ) ; if ( ! user . isPresent ( ) ) { LOGGER . warn ( "User is not available: " + tokenString ) ; return Optional . empty ( ) ; } // If user exists and active than check Service Permissions for authorization controls if ( user . get ( ) . isActive ( ) ) { if ( token . getPermissions ( ) == null ) { LOGGER . debug ( "Loading Permissions from DB: " + tokenString ) ; Set < String > permissions = new HashSet < String > ( ) ; Set < PermissionEntry > rolePermissions = new HashSet < PermissionEntry > ( ) ; //If user role is a group than add sub role permissions to group Optional < RoleEntry > role = ( Optional < RoleEntry > ) roleStore . findByRoleId ( user . get ( ) . getRoleId ( ) ) ; getAllRolePermissions ( role . get ( ) , rolePermissions ) ; for ( PermissionEntry permission : rolePermissions ) { if ( permission . getType ( ) . equals ( PermissionEntry . Type . SERVICE ) ) { Optional < ? extends ServiceEntry > service = serviceStore . findByCode ( permission . getRestrictedItemId ( ) ) ; if ( service . isPresent ( ) ) { permissions . add ( service . get ( ) . getPath ( ) + ":" + service . get ( ) . getMethod ( ) ) ; } } } // Create credentials with user info and permission list token . setPermissions ( Collections . unmodifiableSet ( permissions ) ) ; } else { LOGGER . debug ( "Loading Permissions from Cache: " + tokenString ) ; } return Optional . ofNullable ( token ) ; } } catch ( Exception e ) { LOGGER . error ( tokenString , e ) ; } return Optional . empty ( ) ; }
Creates {@link Optional} {@link io.robe.auth.Credentials} instance from provided tokenString

@param tokenString tokenString to decode.
@return Optional instance of a {@link io.robe.auth.Credentials} which created from tokenString
@throws AuthenticationException
Creates { @link Optional } { @link io . robe . auth . Credentials } instance from provided tokenString